QMainWindow和QWidget分别作为主窗体时对Layout的影响
2017-01-03 17:55
429 查看
最新写个小demo的时候,发现个问题,使用水平布局,最后所有的widget都堆在一起了,
分析得出的结论应该是layout出现错误了,
因为我使用qtcreator默认创建的是QMainWindow作为主窗体,
是继承自QMainWindow的,所以在设置layout的时候需要使用下面的代码:
完整代码:
看来自己还是基础不扎实,需要多学习!大家可以分享自己的思路,谢谢
分析得出的结论应该是layout出现错误了,
因为我使用qtcreator默认创建的是QMainWindow作为主窗体,
class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private: Ui::MainWindow *ui; QListWidget *m_leftList; QStackedWidget *m_stack; QLabel *label1; QLabel *label2; QLabel *label3; };
是继承自QMainWindow的,所以在设置layout的时候需要使用下面的代码:
QWidget *w = new QWidget; QHBoxLayout *mainLayout = new QHBoxLayout(w); this->setCentralWidget(w);
完整代码:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QWidget *w = new QWidget; QHBoxLayout *mainLayout = new QHBoxLayout(w); this->setCentralWidget(w);
m_leftList = new QListWidget(this);
m_leftList->insertItem(0, tr("window1"));
m_leftList->insertItem(1, tr("window2"));
m_leftList->insertItem(2, tr("window3"));
label1 = new QLabel(tr("windows1\n\t by craig"));
label2 = new QLabel(tr("windows2\n\t by craig"));
label3 = new QLabel(tr("windows3\n\t by craig"));
m_stack = new QStackedWidget(this);
m_stack->addWidget(label1);
m_stack->addWidget(label2);
m_stack->addWidget(label3);
mainLayout->setMargin(5);
mainLayout->setSpacing(5);
mainLayout->addWidget(m_leftList);
mainLayout->addWidget(m_stack, 0, Qt::AlignHCenter);
mainLayout->setStretchFactor(m_leftList, 1);
mainLayout->setStretchFactor(m_stack, 3);
connect(m_leftList, SIGNAL(currentRowChanged(int)), m_stack, SLOT(setCurrentIndex(int)));
}
看来自己还是基础不扎实,需要多学习!大家可以分享自己的思路,谢谢
相关文章推荐
- QMainWindow 和 QWidget 设置layout
- QMainWindow 和 QWidget 设置layout
- html分帧标签<frameset>实现同窗口分割多个窗口(刷新窗体互不影响)
- 分别使用Frame和JFrame新建可关闭窗体及二者异同
- QWidget,QMainWindow和QDialog的区别
- QWidget、QMainWindow、QDialog区别
- 在窗体上放置一个标签、一个按钮、一个fontDialog控件。标签内容改为“烟台大学”。实现功能:1)程序运行时,单击打开字体对话框按钮,可选择字体,并以所选字体作为标签字体。
- 10fitsSystemWindows对CoordinatorLayout的影响
- view对象和Fragment分别作为数据源实现ViewPager(导航栏)功能
- JS+JQuery+JQgrid浏览器窗体尺寸变更后对页面元素的影响相关
- QMainWindow中添加layout的问题
- QWidget,QMainWindow和QDialog的区别
- vb.net 教程 3-8 窗体编程 容器 4 TableLayoutPanel & FlowLayoutPanel
- 在winForm窗体上加上DialogResult作为返回值
- QWidget、QDialog、QMainWindow的异同点
- QWidget、QMainWindow、QDialog和QFrame的区别
- QT中QWidget、QDialog及QMainWindow的区别
- android:layout_margin和android:padding的分别
- maven 发布 web 项目(分别使用 Jetty 和 Tomcat 作为容器)
- QT中QWidget、QDialog及QMainWindow的区别