我正在尝试创建一个具有多个选项卡的QTabWidget
的 GUI。作为初步测试,我创建了一个具有两个选项卡的选项卡,使用相同的布局。第一个选项卡(第 1 页)为空白,但第二个选项卡显示我创建的QTableView
。两个选项卡的创建方式完全相同,但它们的性能不同。有谁知道为什么第一个是空白的...?
我注意到,如果我注释掉int8Window->setLayout(_layout);
行.第 1 页以正确的布局显示,这次第二个选项卡为空白......
这是 gui 的代码:
// Main window and layout
QWidget* mainWindow = new QWidget;
QVBoxLayout *mainLayout = new QVBoxLayout;
// Tab widget
QTabWidget* tabWidget = new QTabWidget;
// The pages in the tab widget
QWidget* uInt8Window = new QWidget;
uInt8Window->setWindowTitle(QString("Page 1"));
QWidget* int8Window = new QWidget;
int8Window->setWindowTitle(QString("Page 2"));
QTableView* tableView = new QTableView;
QStandardItemModel* model = new QStandardItemModel(5, 5);
for (int row = 0; row < 5; ++row) {
model->setItem(row, 0, new QStandardItem("3"));
model->setItem(row, 1, new QStandardItem(5));
model->setItem(row, 2, new QStandardItem(2));
model->setItem(row, 3, new QStandardItem(1));
model->setItem(row, 4, new QStandardItem(5));
}
tableView->setModel(model);
// Setting the tab page layouts
_layout = new QVBoxLayout;
_layout->addWidget(tableView);
uInt8Window->setLayout(_layout);
int8Window->setLayout(_layout);
// Add the pages to the tab widget
tabWidget->addTab(uInt8Window, "Page 1");
tabWidget->addTab(int8Window, "Page 2");
// Add the tab widget to the main layout and show
mainLayout->addWidget(tabWidget);
mainWindow->setLayout(mainLayout);
mainWindow->show();
读取日志!我相信你有相应的警告。
您正在为两个不同的微件分配相同的布局。将布局分配给小部件后,它将永远归该微件所有。
您需要为每个小部件创建单独的布局。
我建议将其拆分为几种方法。一种是为页面创建一个小部件(你可以使用几次)。其他创建数据模型和其他组合选项卡小部件。
还请记住有关内存管理的信息!最好的方法是在构造期间设置父级(作为构造函数的参数)。数据模型中存在泄漏。