簡體   English   中英

Qt:QButtonGroup的QList

[英]Qt: QList of QButtonGroup

嘿! 我嘗試執行以下操作

    QList<QButtonGroup*> groups;
    for (int i=0; i<nGroup; i++)
    {
        QButtonGroup *objects = new QButtonGroup(this);
        objects->setExclusive(false);
        for (int j=0; j<nObject; j++)
        {
            Led *tempLed = new Led();
            tempLed->setAutoExclusive(false);
            layout->addWidget(tempLed,j,i,Qt::AlignLeft);
            objects->addButton(tempLed);
        }
        groups.append(objects);
    }

然后嘗試執行以下操作:

groups.at(1)->button(2)->setChecked(true);

代碼可以編譯,但是在運行時會拋出未處理的異常。 我究竟做錯了什么? 還有更好的方法來創建QButtonGroup組嗎?

QButtonGroup :: button函數返回具有特定ID的按鈕,但是在將按鈕添加到按鈕組時沒有使用ID。 QButtonGroup :: button在您的示例中返回0,導致空指針訪問異常。

...
objects->addButton(tempLed);
...

如果將代碼更改為

...
objects->addButton(tempLed, j );
...

您的原始代碼將起作用。

我更喜歡QList :: at而不是QList :: operator [],因為您不想更改列表中的值(== pointer)。

我認為這個問題是與功能相關 它返回一個const項,您正在其中調用一個非const函數。

請改用operator []

好的,我這樣解決了:

QButtonGroup *bG;
bG = groups[gr];
QAbstractButton *aB = bG->buttons()[obj];
aB->setChecked(command);

真的沒弄清楚問題是什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM