【发布时间】:2015-09-20 12:08:26
【问题描述】:
我需要一个 QMainWindow 布局来根据内核数量进行更改。 因此我手动设置(不使用设计模式)。
我的问题是: 创建此布局后,如何引用它包含的小部件?
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//...
buildLayout();
//...
// Now I'd like to use something like this:
// ui->threadingTable->...
// However, it's not the member of ui
}
void MainWindow::buildLayout()
{
QWidget *window = new QWidget(this);
QTableView *threadingTable = new QTableView(window);
//...
QGridLayout *layout = new QGridLayout(window);
layout->addWidget(threadingTable, 0, 0);
//...
window->setLayout(layout);
this->setCentralWidget(window);
}
我可以从this->centralWidget() 中获取 QLayoutItem。
或者我可以在 MainWindow 类的布局成员中制作所有小部件并直接访问它们。
但是,我觉得这些都不是正确的方法。
有没有办法将小部件传递给 ui?
这样我就可以通过调用来访问它们
ui->threadingTable
【问题讨论】:
-
在我看来,使小部件也成为“主”类的成员并没有错。当然,您通常不需要访问所有这些,并且在将它们添加到布局之前可能会连接信号。
标签: qt qwidget qmainwindow qlayout qgridlayout