【发布时间】:2017-07-21 19:37:33
【问题描述】:
这是我想要的安排:
------------ ------
| | | 2 |
| | | |
| 1 | ------
| | ------
| | | 3 |
------------ ------
问题是默认布局的addwidget函数没有行和列的参数。我什至不能添加任何QVBoxLayout,因为编译器说布局已经存在,所以你不能添加更多布局。
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
m_QPushButton_calibration = new QPushButton("Calibrate", this);
connect(m_QPushButton_calibration, SIGNAL (released()),this, SLOT (handleButton()));
QList<QCameraInfo> l_QListQCameraInfo_available_cameras = QCameraInfo::availableCameras();
m_QCameraViewfinder_viewfinder = new QCameraViewfinder(this);
if (l_QListQCameraInfo_available_cameras.length() > 2)
{
m_QCamera_required_camera = new QCamera (l_QListQCameraInfo_available_cameras[1]);
m_QCamera_required_camera->setViewfinder(m_QCameraViewfinder_viewfinder);
m_QCamera_required_camera->start ();
}
this->layout()->addWidget(m_QPushButton_calibration);
this->layout()->addWidget(m_QCameraViewfinder_viewfinder);
m_QCameraViewfinder_viewfinder->show();
}
【问题讨论】:
-
请注意,您真的不应该直接对
QMainWindow的布局进行任何操作。相反,您应该创建所需的小部件层次结构并将其传递给QMainWindow::setCentralWidget。 -
@G.M.请考虑写一个小例子作为答案。
-
@G.M.你能参考一下上面写着
you really shouldn't be doing anything with the layout of a QMainWindow directly的文档吗? -
@SingerOfTheFall 不幸的是,文档没有明确说明。但是,如果您查看description of
QMainWindow,很明显它提供的很多(大部分)功能都超出了普通的QWidget的范围,这取决于它自己的私有布局——可移动工具栏、停靠小部件等。所以即使你确实设法用您自己的布局替换原始布局,您真正实现的是将QMainWindow变成普通的QWidget- 额外的功能丢失了。
标签: c++ qt layout qmainwindow