我动态添加一个按钮,例如:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QPushButton *btn = new QPushButton(this);
btn->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred);
btn->move(150,150);
btn->resize(100,100);
btn->show();
}
如何在Qt中的另一个空白处使用此按钮? 例如,我想单击另一个按钮以删除此动态添加的按钮。
答案 0 :(得分:0)
您的按钮是在构造函数中定义的,因此在您执行之后
btn->resize(100,100);
btn->show();
并退出构造函数,您手中没有任何东西可以操纵按钮(这是您现在所需要的)
解决此问题的一种方法是将按钮声明为类成员,然后可以根据需要使用按钮的名称进行更改。
编辑:
标题:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QPushButton>
namespace Ui
{
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_pushButton_2_clicked();
void on_pushButton_clicked();
private:
Ui::MainWindow *ui;
QPushButton *myButton{nullptr};
};
#endif // MAINWINDOW_H
cpp:
#include "MainWindow.h"
#include "ui_MainWindow.h"
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
myButton = new QPushButton("some button");
myButton->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred);
myButton->move(150,150);
myButton->resize(100,100);
}
MainWindow::~MainWindow()
{
delete ui;
delete myButton;
}
void MainWindow::on_pushButton_2_clicked()
{
myButton->show();
}
void MainWindow::on_pushButton_clicked()
{
// close or do what ever you want with it
myButton->close();
}