gpt4 book ai didi

c++ - 使用组合框在qt对话框中切换不同的表

转载 作者:行者123 更新时间:2023-11-30 03:17:30 25 4
gpt4 key购买 nike

我想在一个对话框中显示一些表格,可以通过qt对话框中的组合框进行切换。如何通过在组合框中选择相应的索引来切换到另一个表?我应该删除一个并添加一个新的...

dialog in qt

最佳答案

您可以使用 QStackedWidget,它允许您一次只查看一个小部件,并根据 currentIndex 更改小部件,如下例所示,另一种选择是使用 QStackedLayout:

#include <QtWidgets>

static QTableWidget *create_table(const QString & name){
QTableWidget *table = new QTableWidget(4, 4);
for (int j = 0; j < table->columnCount(); ++j){
table->setHorizontalHeaderItem(j, new QTableWidgetItem(QString("%1-%2").arg(name).arg(j)));
for(int i=0; i< table->rowCount(); ++i){
table->setItem(i, j, new QTableWidgetItem(QString::number(QRandomGenerator::global()->bounded(100))));
}
}
return table;
}

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QStackedWidget *stacked = new QStackedWidget;
QComboBox *combo = new QComboBox;

QObject::connect(combo, QOverload<int>::of(&QComboBox::currentIndexChanged), stacked, &QStackedWidget::setCurrentIndex);

for(const QString & name: {"A", "B", "C", "D", "E"}){
QTableWidget *table = create_table(name);
stacked->addWidget(table);
combo->addItem(name);
}

QDialog w;
QVBoxLayout *lay = new QVBoxLayout{&w};
lay->addWidget(stacked);
QHBoxLayout *hlay = new QHBoxLayout;
hlay->addWidget(new QLabel("Layer"));
hlay->addWidget(combo);
lay->addLayout(hlay);
w.show();
return a.exec();
}

关于c++ - 使用组合框在qt对话框中切换不同的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55407850/

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