Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在QT中的按钮单击上创建按钮_C++_Qt_Button_Qt Creator_Qpushbutton - Fatal编程技术网

C++ 在QT中的按钮单击上创建按钮

C++ 在QT中的按钮单击上创建按钮,c++,qt,button,qt-creator,qpushbutton,C++,Qt,Button,Qt Creator,Qpushbutton,我该怎么做?我想通过按下另一个按钮来创建一个按钮,但在我的当前代码中,我可以只创建一个按钮,而我创建的按钮将消失 我怎样才能动态地做到这一点?请帮忙,我对Qt有点陌生 这是它的主要部分: MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ui->button1->setVisible(false);

我该怎么做?我想通过按下另一个按钮来创建一个按钮,但在我的当前代码中,我可以只创建一个按钮,而我创建的按钮将消失

我怎样才能动态地做到这一点?请帮忙,我对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);
}
这样按钮就出现了,但是如果我想缩放它,对我来说这似乎不是一个解决方案。


每次单击“倍增”按钮都会出现一个新按钮。

我不熟悉设计器和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);
}

您应该使用当前代码编辑您的问题,以便我们更好地理解您的问题。看您是对的,现在是否更容易理解?请注意,除非您需要QMainWindow提供的可停靠子窗口功能,否则不应该使用QMainWindow。否则,您应该使用QDialog或QWidget作为基类。