繁体   English   中英

通过另一个按钮向QListWidget添加单选按钮或从QListWidget删除单选按钮? t

[英]Add/remove radio button to/from QListWidget by another button? Qt

我正在尝试制作一个简单的应用程序,其中包含2个按钮和带有单选按钮的QWidgetList。 所有Ui元素都需要手动创建。 我试图使用类似的信号,但是Qt Creator并未对此进行编译。

   // window.h
     namespace Ui {
     class Window;
     }

    class Window : public QWidget
    {
    Q_OBJECT
    public:
    explicit Window(QWidget *parent = 0);

    QPushButton * addButton;
    QPushButton * removeButton;
    QLineEdit   textEdit;
    QList<QRadioButton*> radioButtonList;
    QGridLayout * layout;

    public slots:
    void addButton_clicked();

    private:
    QGroupBox *createRadiobuttonGroup();
    QGroupBox *createPushButtonGroup();
    QGroupBox *createTextEdit();
    QGroupBox *createListWidget();
    Ui::Window *ui;
    }; 
        //Window.cpp

            Window::Window(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Window)


{
    QGridLayout *grid = new QGridLayout;
       grid->addWidget(createRadiobuttonGroup(), 0, 1);
       grid->addWidget(createPushButtonGroup(), 1, 1);
       grid->addWidget(createTextEdit(), 1, 0);
       grid->addWidget(createListWidget(), 0, 0);
       setLayout(grid);
       setWindowTitle(tr("Group Box"));
       resize(640, 480);
   }


    QGroupBox *Window::createListWidget()
    {
        QGroupBox *groupBox = new QGroupBox(tr("RadioButton List"));

        QListWidget *radioButtonList = new QListWidget();
        QVBoxLayout *vbox = new QVBoxLayout;
        vbox->addWidget(radioButtonList);
        vbox->addStretch(1);
        groupBox->setLayout(vbox);
            QListWidgetItem *item = new QListWidgetItem();

            radioButtonList -> addItem(item);
        QString *value = new QString("Radiobutton value");
        radioButtonList -> setItemWidget(item, new QRadioButton(tr(value->toUtf8())));

        return groupBox;
    }



    QGroupBox *Window::createRadiobuttonGroup()
    {
       QGroupBox *groupBox = new QGroupBox();

       QRadioButton *radio1 = new QRadioButton(tr("&Vetical"));
       QRadioButton *radio2 = new QRadioButton(tr("&Horizontal"));

       radio1->setChecked(true);

       QVBoxLayout *vbox = new QVBoxLayout;
       vbox->addWidget(radio1);
       vbox->addWidget(radio2);
       vbox->addStretch(1);
       groupBox->setLayout(vbox);

       return groupBox;
   }

      QGroupBox *Window::createPushButtonGroup()
   {
       QGroupBox *groupBox = new QGroupBox();

       QPushButton *addButton = new QPushButton(tr("&Add"));
       QPushButton *renameButton = new QPushButton(tr("&Remove"));
       QVBoxLayout *vbox = new QVBoxLayout;
       vbox->addWidget(addButton);
       vbox->addWidget(renameButton);
       vbox->addStretch(1);
       groupBox->setLayout(vbox);

       return groupBox;
       }

      QGroupBox *Window::createTextEdit()
      {
       QGroupBox *groupBox = new QGroupBox();

       QLineEdit *textEdit = new QLineEdit();
       QVBoxLayout *vbox = new QVBoxLayout;
       vbox->addWidget (textEdit);
       vbox->addStretch(1);
       groupBox->setLayout(vbox);

       connect(addButton, SIGNAL(clicked()), this, SLOT(addButton_clicked()));

       return groupBox;
       }

     void Window::addButton_clicked()

      {

       QRadioButton  radio_btn = new QRadioButton("name");

       vbox << radio_btn; // append radio button to the list
         vbox->addWidget(radio_btn);
      }
void Window::addButton_clicked()
{
    QRadioButton  radio_btn = new QRadioButton("name");
    vbox << radio_btn; // append radio button to the list
    vbox->addWidget(radio_btn);
}

变量vbox在该范围中不存在。 即使这样做, QVBoxLayout也没有<<操作符,所以您不能使用它。 您也出于某种原因将其称为列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM