我正在嘗試了解如何使用信號來QCheckBox檢查一個信號時取消選中相同的所有其他復選框QGroupBox
class GroupBox : public QGroupBox
{
public:
GroupBox(QWidget *parent = nullptr) : QGroupBox(parent)
{
}
public slots:
void uncheck();
};
class CheckBox : public QCheckBox
{
public:
CheckBox(QWidget *parent = nullptr) : QCheckBox(parent)
{
connect(this, SIGNAL(checked()), this, SLOT(checked()));
}
public slots:
void checked()
{
qDebug() << "checked";
}
};
當我單擊其中一個復選框時,它沒有轉到該功能checked()。
uj5u.com熱心網友回復:
QCheckBox繼承自QAbstractButton
您應該使用clicked或stateChanged信號而不是選中。
ep
connect(this, SIGNAL(stateChanged(int)), this, SLOT(checked(int)));
順便提一句; 如果使用現代 Qt 版本,您應該放棄SIGNALandSLOTS宏,而使用connect()在編譯時檢查的新語法。
參考:新的信號槽語法
ep
connect(this, &QCheckBox::clicked, this, &CheckBox::checked);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/517392.html
標籤:C qt
