Я бы хотел открыть основные окна, а затем добавить несколько кнопок внутри позже во время выполнения.добавить виджет «на лету»
EDIT: Я обновить свой код, чтобы принять во внимание ответ PRIME (и, возможно, сделать этот вопрос более точно)
Я написал это:
'ex_qt.h'
#include<QHBoxLayout>
#include<QMainWindow>
class ButtonWindow : public QMainWindow
{
Q_OBJECT;
signals:
void need_button();
private slots:
void start_loop();
void do_bing();
void create_button();
private:
QVBoxLayout* v_layout;
public:
ButtonWindow();
};
и 'ex_qt.cpp'
#include <iostream>
#include <string>
#include <thread>
#include <chrono>
#include <QtGui>
#include "ex_qt.h"
void ButtonWindow::start_loop()
{
for (int i=0;i<10;i++)
{
std::chrono::milliseconds timespan(500);
std::this_thread::sleep_for(timespan);
emit need_button();
}
}
void ButtonWindow::create_button()
{
std::cout<<"Creating a new button"<<std::endl;
QPushButton* button= new QPushButton("auto");
v_layout->addWidget(button);
button->show();
}
void ButtonWindow::do_bing() { std::cout<<"BING"<<std::endl; }
ButtonWindow::ButtonWindow():
QMainWindow()
{
QWidget* button_widget = new QWidget(this);
v_layout=new QVBoxLayout();
QPushButton* button= new QPushButton("click here to begin");
QPushButton* button2= new QPushButton("make bing");
v_layout->addWidget(button);
v_layout->addWidget(button2);
button_widget->setLayout(v_layout);
connect(button,SIGNAL(clicked() ),this, SLOT(start_loop()));
connect(button2,SIGNAL(clicked() ),this, SLOT(do_bing()));
connect(this,SIGNAL(need_button() ),this, SLOT(create_button()));
setCentralWidget(button_widget);
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
ButtonWindow* bw=new ButtonWindow();
bw->show();
app.exec();
return 42;
}
С помощью этого кода при нажатии «нажмите здесь, чтобы попросить», я вижу, что главное окно увеличивается в 10 раз, но кнопки только становятся видимыми в конце. То же самое с кнопкой «bing»: если я нажимаю кнопку bing во время цикла, цикл «BING» отображается только при завершении цикла.
Моя цель - немедленные функциональные кнопки, даже если следующая кнопка еще не создана.
Как я могу достичь своей цели?
Да, он компилируется с "-std = C++ 11". Я приспосабливаю свой код к вашему комментарию. Благодарю. –