所以我已經達到了我對Qt和C++的總體認識上限。我正在基於QComboBox的輸入創建QScrollArea中的複選框。根據QComboBox中選定的值,創建特定數量的複選框。一旦我創建了這些複選框,我在理解如何與他們交互(在我的情況下,只是檢查它們是否被選中)與他們正在創建和調用函數之外有一個問題。我知道如何與他們一起工作,如果按鈕是靜態的,但由於複選框是動態的(這是正確的詞?),可以改變,我不知道該怎麼做。以下是關於如何創建複選框的代碼片段。如果我現在想簡單地檢查是否有任何框被選中,我該怎麼做。能否以某種方式「返回」或「調用」另一個功能中創建的複選框?我知道我只需要遍歷數組並檢查,我只是簡單地不知道如何將複選框數組置入另一個函數或如何在下面的函數中返回它們。Qt 5.3:動態創建的訪問/返回/調用複選框(?)
感謝您的幫助!
void MyProgram::create_checkboxes(QString opnum)
{
QWidget* MDAcheckboxes = new QWidget(ui->MDA);
QVBoxLayout* MDAlayout = new QVBoxLayout(MDAcheckboxes);
QCheckBox *MDAmycheckBox[9];
QList<QString> boxes;
if (opnum == "640")
{
boxes << "16-1" << "16-2";
for (int i = 0; i < 2; i++)
{
MDAmycheckBox[i] = new QCheckBox(MDAcheckboxes);
MDAmycheckBox[i]->setText(boxes[i]);
MDAlayout->addWidget(MDAmycheckBox[i]);
}
ui->MDA->setWidget(MDAcheckboxes);
}
else if (opnum == "645")
{
boxes << "13-01"<<"13-2"<<"13-3"<<"13-4"<<"13-5";
for (int i = 0; i < 5; i++)
{
MDAmycheckBox[i] = new QCheckBox(MDAcheckboxes);
MDAmycheckBox[i]->setText(boxes[i]);
MDAlayout->addWidget(MDAmycheckBox[i]);
}
ui->MDA->setWidget(MDAcheckboxes);
}
else if (opnum == "650")
{
boxes << "13-6"<<"13-7"<<"13-8"<<"13-9"<<"13-10"<<"13-11"<<"13-12"<<"13-13"<<"13-14";
for (int i = 0; i < 9; i++)
{
MDAmycheckBox[i] = new QCheckBox(MDAcheckboxes);
MDAmycheckBox[i]->setText(boxes[i]);
MDAlayout->addWidget(MDAmycheckBox[i]);
}
ui->MDA->setWidget(MDAcheckboxes);
}
}
此代碼不適用於ScrollArea嗎?爲什麼我必須使用groupBox?這絕對有助於我,謝謝。 – Gundown64 2014-11-05 20:35:07
@ Gundown64你不應該像我在我的回答中說的那樣應該有一個父母,父母可以是ScrollArea,groupBox或另一個小工具,爲你的任務選擇最好的。在你的情況下,pareint是:'MDAcheckboxes'和'ui-> MDA'是'MDAcheckboxes'的父項' – Chernobyl 2014-11-05 20:36:57
@ Gundown64我從我的答案中刪除了groupBox,所以現在它不會混淆。 – Chernobyl 2014-11-05 20:39:33