在QT中点击按钮创建按钮
Creating buttons on button click in 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
每次点击乘法都会出现一个新按钮。
我不熟悉设计器和 ui 文件。这是一个"full code"命题:
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);
}
我该怎么做?我想通过按下另一个按钮来创建一个按钮,但是在我当前的代码中,我只能创建一个按钮,而我创建的按钮消失了。
我怎样才能动态地做到这一点?请帮忙,我对 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
每次点击乘法都会出现一个新按钮。
我不熟悉设计器和 ui 文件。这是一个"full code"命题:
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);
}