QT и проблема с флажками - PullRequest
       23

QT и проблема с флажками

0 голосов
/ 27 апреля 2011

, вероятно, то, что я спрашиваю, очень легко, но я застрял! (

У меня есть QWidget, в котором я загружаю QGridLayout, в котором я добавляю число QCheckBox '*

Я не могу понять, как поймать сигнал изменений состояния из флажков ....

флажки добавлены в цикл for, в котором я создаю новый QCheckBox который и добавив его в качестве виджета в qgridlayout ...

что я должен подключиться? сигнал изменения каждой кнопки для моего пользовательского слота или что-то еще?

код, который я использую

QGridLayout *myLayout = new QGridLayout;
for (int i=0; i<(int)m_List.size(); i++)
{
    QCheckBox *button = new QCheckBox;
    button->setText(m_List[i].m_strName.c_str());
    button->setIcon(QIcon(m_List[i].m_strThumbNailPath.c_str()));
    button->setIconSize(QSize(50, 50));
    button->setCheckable(true);
    myLayout->addWidget(button);
    connect(button, SIGNAL(stateChanged), this, SLOT(checkboxStateChanged));
}


myLayout->setRowStretch(2, 10);
myLayout->setColumnStretch(2, 10);

QWidget *myWidget = new QWidget;
myWidget->setLayout(myLayout);

myToolbox = new QToolBox;
myToolbox->addItem(myWidget, "Options");

он отображает флажки правильно, я могу проверять и снимать их, но я не могу поймать сигнал ... что мне не хватает? Спасибо!

Ответы [ 2 ]

3 голосов
/ 27 апреля 2011

Ваше соединение проблематично (без подписи):

connect(button, SIGNAL(stateChanged), this, SLOT(checkboxStateChanged)); 

добавить parementers к: stateChanged и checkboxStateChanged

должно быть что-то вроде:

connect(button, SIGNAL(stateChanged(int)), this, SLOT(checkboxStateChanged(int))); 

Вы получите состояние флажка в параметре checkboxStateChanged int как одно из

Qt::CheckState

значения перечисления, см. здесь

2 голосов
/ 27 апреля 2011

Да, ответ, который дал soulSurfer, вероятно, исправит вашу связь, но не вашу проблему, есть более крупная рыба, которую нужно жарить.Как вы собираетесь понять, какая кнопка была нажата (я предполагаю, что это имеет значение)?

Чтобы понять, какая кнопка была нажата, вам придется использовать QSignalMapper или QButtonGroup.

Надеюсь, это поможет.

...