QMainWindow 和 QWidget 设置layout
2014-04-24 17:47
531 查看
给QWidget或者QDialog设置布局的时候方式很简单。创建好一个布局:mainLayout,然后不停地把各个控件往mainLayout里面放,最后调用setLayout(mainLayout)就行了。
QMainWindow中使用这个方法的时候却不管用,因为QMainWindow是默认有layout的,所以再次设置layout会失效。
会出现这种提示:
QWidget::setLayout: Attempting to set QLayout "" on MainWindow "", which already has a layout
这句话的意思是说,你已经给MainWindow设置过一个布局了,再设置一个会出错。
该如何给QMainWindow正确地设置布局呢
要想QMainWidget创建布局,合理的步骤应该是这样的:
第一步创建一个QWidget实例,并将这个实例设置为centralWidget:
然后创建一个主布局mainLayout,并把所需要的所有控件都往里面放(工具栏、菜单栏、状态栏除外):
...
最一步就是将widget的布局设置为mainLayout
这样就可了。
QMainWindow中使用这个方法的时候却不管用,因为QMainWindow是默认有layout的,所以再次设置layout会失效。
会出现这种提示:
QWidget::setLayout: Attempting to set QLayout "" on MainWindow "", which already has a layout
这句话的意思是说,你已经给MainWindow设置过一个布局了,再设置一个会出错。
该如何给QMainWindow正确地设置布局呢
要想QMainWidget创建布局,合理的步骤应该是这样的:
第一步创建一个QWidget实例,并将这个实例设置为centralWidget:
然后创建一个主布局mainLayout,并把所需要的所有控件都往里面放(工具栏、菜单栏、状态栏除外):
...
最一步就是将widget的布局设置为mainLayout
widget = new QWidget(); this->setCentralWidget(widget); cbox = new QCheckBox(this); cbox->setText("choose"); cbox->setChecked(false); button = new QPushButton(this); QVBoxLayout *layout = new QVBoxLayout(this); layout->addWidget(cbox); layout->addWidget(button); widget->setLayout(layout);
这样就可了。
相关文章推荐
- QMainWindow 和 QWidget 设置layout
- QMainWindow与QWidget和QDialog设置布局的不同之处
- 关于 QMainwindow设置布局layout失败 的解决方法
- QMainWindow和QWidget分别作为主窗体时对Layout的影响
- QMainWindow与QWidget和QDialog设置布局的不同之处
- setCentralWidget就可以把Qwidget设置为QMainWindow的主窗口
- QMainWindow与QWidget和QDialog设置布局的不同之处
- android中如何在代码中直接设置View的layout_weight属性
- ios 使用autolayout 后button 的frame 无法设置问题!
- android_TabLayout设置setupWithViewPager需要注意的问题
- 设置tablayout光标宽度
- PADS 9.5 layout 设置不同过孔 网路的颜色
- 巧用android:divider属性设置LinearLayout中元素之间的间隔
- TabLayout+ViewPager 设置icon
- QWidget的背景颜色和背景图片的设置
- easyui 1.5.2bug,Pagination(分页)layout属性设置 不显示分页
- 使用layoutParams设置控件高宽需要注意的问题
- Android- -RelativeLayout属性设置
- 笔记 android 代码中设置Android:layout_gravity
- [Android] 布局文件中设置android:gravity 和 android:layout_gravity属性