【发布时间】:2020-01-10 23:10:06
【问题描述】:
我有一个带有复选框的WidgetList,我想将它们用作调用slotTest 函数的信号。
不幸的是,代码不起作用,我找不到解决方案:
connect(ui->listWidget, SIGNAL(item->checkState()), this, SLOT(slotTest()), Qt::QueuedConnection);
这里有更多代码:
QStringList list;
list << "CH1 100kHz" << "CH2 100kHz" << "CH3 100kHz";
model->setStringList(list);
ui->listView->setModel(model);
ui->listView->setEditTriggers(QAbstractItemView::AnyKeyPressed | QAbstractItemView::DoubleClicked);
//ui->listView->setSelectionMode(QAbstractItemView::S)
ui->listWidget->addItems(list);
QListWidgetItem* item = 0;
for(int i = 0; i < ui->listWidget->count(); ++i){
item = ui->listWidget->item(i);
item->setFlags(item->flags() | Qt::ItemIsUserCheckable);
item->setFlags(item->flags() | Qt::ItemIsEditable);
item->setCheckState(Qt::Unchecked);
//connect(ui->listWidget, SIGNAL(itemClicked()), this, SLOT(slotTest()), Qt::QueuedConnection);
// bool ischeck=ui->listWidget->item(i)->checkState();
connect(ui->listWidget, SIGNAL(item->checkState()), this, SLOT(slotTest()), Qt::QueuedConnection);
}
【问题讨论】:
-
请添加完整的minimal reproducible example。因为乍一看,这行似乎没问题(除了
Qt::QueuedConnection,我至少不熟悉。 -
你错误地使用了信号/槽机制。我认为你必须再读一遍doc.qt.io/qt-5/signalsandslots.html。
-
@vahancho 我不明白为什么这不起作用