我有一個工作信號插槽機制,供用戶檢查和取消選中複選框。在插槽中傳遞QString
QWidget *w = new QWidget(this);
w->setFixedSize(300,200);
QVBoxLayout *vbox = new QVBoxLayout;
foreach(QString filt, filters){
QCheckBox *checkbox = new QCheckBox(filt, this);
checkbox->setChecked(true);
vbox->addWidget(checkbox);
connect(checkbox, SIGNAL(stateChanged(int)), this, SLOT(cbstate(int)));
}
w->setLayout(vbox);
w->show();
void MainWindow::cbstate(int state){
if(state == 0){
//unchecked
QMessageBox::information(this, "blah", "You have unchecked this box");
}
else if (state == 2){
//checked
QMessageBox::information(this, "blah", "You have checked this box");
}
}
我的問題的解釋很簡單,我需要將QString filt
傳遞給cbstate
功能。
我不知道該怎麼做?當我試圖將它添加到插槽時,它會拋出錯誤。
你不能這樣做,因爲cbstate函數是插槽,它的信號是stateChanged(int),它只接受int類型的參數。 – Ramez
啊,好吧,有沒有一種可以解釋的方式,我可以通過某種方式改變事物的傳遞方式? – sark9012