gpt4 book ai didi

C++ Qt QComboBox 与 TableView

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:39:47 28 4
gpt4 key购买 nike

我对 QComboBox 有疑问。我需要一个带有 tableview 项目的组合框。

例如QComboBox的默认是:

┌─────────┐
│ ▼ │
├─────────┤
│ index 0 │
├─────────┤
│ index 1 │
├─────────┤
│ index 2 │
├─────────┤
│ index 3 │
└─────────┘

我需要像这样创建 ComboBox:

┌───────────────────┐
│ ▼ │
├─────────┬─────────┤
│ index 0 │ index 1 │
├─────────┼─────────┤
│ index 2 │ index 3 │
└─────────┴─────────┘

我写了示例,但它不能正常工作:

QTableView *table = new QTableView(this);
QComboBox *cb = new QComboBox;
ui->verticalLayout->addWidget(cb);
cb->setView(table);
QStandardItemModel *model = new QStandardItemModel(2,2);
cb->setModel(model);

int x = 0;
int y = 0;
for (int i=0; i<4; i++)
{
model->setItem(x, y, new QStandardItem("index" + QString::number(i)));
if (i == 1) {
x++;
y = 0;
}
else
y++;
}

问题是 - 如果我选择索引 3,ComboBox 将设置索引 2。

编辑:

QTableView *table = new QTableView(this);
QComboBox *cb = new QComboBox;
ui->verticalLayout->addWidget(cb);
cb->setView(table);
QStandardItemModel *model = new QStandardItemModel(2,2);
cb->setModel(model);
for (int i=0; i<4; i++)
model->setItem( i%2, i/2, new QStandardItem("index" + QString::number(i)));
// This one:
connect(table, SIGNAL(pressed(QModelIndex)), SLOT(setCheckBoxIndex(QModelIndex)));

//--SLOT--------
void MainWindow::setCheckBoxIndex(QModelIndex index)
{
QComboBox* combo = qobject_cast<QComboBox*>(sender()->parent()->parent());
combo->setModelColumn(index.column());
combo->setCurrentIndex(index.row());
}

这是工作。

最佳答案

您应该使用 setModelColumn(),因为 QComboBox 一次只显示一列。

像这样:

connect(table, &QTableView::pressed, [cb](const QModelIndex &index){
cb->setModelColumn(index.column());
});

关于C++ Qt QComboBox 与 TableView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40799434/

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