Добавить / удалить переключатель в / из QListWidget другой кнопкой? Qt

0

Я пытаюсь создать простое приложение, содержащее 2 кнопки push и 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);
      }
Теги:
qt

1 ответ

0
Лучший ответ
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 не имеет оператора <<, поэтому вы не можете его использовать. По какой-то причине вы также называете это списком.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню