gpt4 book ai didi

c++ - QTabWidget 选项卡在其中一个选项卡中不显示任何内容

转载 作者:行者123 更新时间:2023-11-28 06:12:44 26 4
gpt4 key购买 nike

我正在尝试创建一个具有多个选项卡的 QTabWidget 的图形用户界面。作为初步测试,我创建了一个具有两个使用相同布局的选项卡的测试。第一个选项卡(第 1 页)是空白的,但第二个选项卡显示了我创建的 QTableView。这两个选项卡的创建方式完全相同,但它们的表现却不同。有谁知道为什么第一个是空白的...?

我注意到如果我注释掉 int8Window->setLayout(_layout); 行。第 1 页显示正确的布局,这次第二个选项卡是空白的...

这是图形用户界面的代码:

    // 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();

最佳答案

阅读日志!我确定您有相应的警告。

您正在为两个不同的小部件分配相同的布局。一旦布局分配给一个小部件,它就永远属于这个小部件。

您需要为每个小部件创建单独的布局。

我建议将其拆分为几个方法。一个是为页面创建一个小部件(您可以多次使用)。其他创建数据模型,以及其他组成选项卡的小部件。

请记住内存管理!最好的方法是在构造期间设置父级(作为构造函数的参数)。您的数据模型存在漏洞。

关于c++ - QTabWidget 选项卡在其中一个选项卡中不显示任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30933355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com