2016-08-04 9 views
1

Как это сделать? Я хочу создать кнопку, нажав другую кнопку, но в текущем кодовом коде я могу просто создать одну кнопку, а кнопка, которую я создал, исчез.Создание кнопок при нажатии кнопки в QT

Как я могу динамически это сделать? Помогите, я новичок в Qt.

Это основная его часть:

MainWindow::MainWindow(QWidget *parent) : 
QMainWindow(parent), 
ui(new Ui::MainWindow) 
{ 
    ui->setupUi(this); 
    ui->button1->setVisible(false); 
} 

MainWindow::~MainWindow() { 
    delete ui; } 


void MainWindow::on_multiplyButton_clicked() 
{ 
    ui->button1->setVisible(true); 
} 

Таким образом, только появляется кнопка, но это не похоже, как решение для меня, если я хотел бы масштабировать. enter image description here

При каждом нажатии на умножение появляется новая кнопка.

+0

Вы должны изменить свой вопрос с текущим кодом, чтобы мы могли лучше понять вашу проблему (см [MCVE] (https://www.google.fr/url?sa = т & RCT = J & Q = & ESRC = s & источник = Web & CD = 8 & хам = RJA & uact = 8 & вед = 0ahUKEwiPw7bFo6fOAhWCvRQKHYN_Dz4QFghUMAc & URL = HTTP% 3A% 2F% 2Fstackoverflow.com% 2Fhelp% 2Fmcve & USG = AFQjCNEkKReghNZHBJSaky_hwPskMmG0ww & Sig2 = 9anXjmzNVE4wrvj6MgRs2Q)) – wasthishelpful

+0

Вы правы, это более понятно сейчас? – snowy

+0

Обратите внимание, что вы не должны использовать 'QMainWindow', если вам не нужна поддерживаемая функция подзаголовка, которую он предлагает. В качестве базового класса вы должны использовать 'QDialog' или' QWidget'. –

ответ

1

Я не знаком с дизайнером и ui-файлами. Вот «полный код» предложение:

class MainWindow : public QMainWindow { 
    public: 
     MainWindow(QWidget *parent = nullptr); 

     void on_multiplyButton_clicked(); 

    private: 
     QBoxLayout *layout; 
}; 

MainWindow::MainWindow(QWidget *parent):QMainWindow(parent) { 
    // create multiply button 
    QPushButton *button = new QPushButton(tr("Push me hard")); 
    connect(
     button, &QPushButton::clicked, 
     this , &MainWindow ::on_multiplyButton_clicked 
    ); 

    // initialize button container 
    this->layout = new QHBoxLayout; // or QVBoxLayout if you prefer 
    this->layout->addWidget(button); 

    // set central widget of the main window 
    QWidget *central_widget = new QWidget; 
    central_widget->setLayout(this->layout); 
    this->setCentralWidget(central_widget); 
} 

void MainWindow::on_multiplyButton_clicked() { 
    QPushButton *button = new QPushButton(
     tr("button%1").arg(this->layout->count()) 
    ); 
    this->layout->addWidget(button); 
} 
+0

Работает как магия, большое спасибо! – snowy