在QT

时间:2016-08-04 07:43:22

标签: c++ qt button qt-creator qpushbutton

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

我怎么能动态地做到这一点?请帮忙,我对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

每次点击时,都会出现一个新按钮。

1 个答案:

答案 0 :(得分: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);
}