Мне нужно, чтобы макет 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);
}
Я могу получить QLayoutItem из this->centralWidget()
. Или я могу сделать все виджеты в макете членами класса MainWindow и получить к ним прямой доступ.
Однако я чувствую, что ни один из этих способов не является правильным.
Есть ли способ передать виджеты пользовательскому интерфейсу? Чтобы я мог получить к ним доступ, позвонив ui->threadingTable