我动态地添加一个按钮,我如何在另一个虚空中的Qt使用此按钮?

时间:2019-02-01 15:22:46

标签: c++ qt

我动态添加一个按钮,例如:

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中的另一个空白处使用此按钮? 例如,我想单击另一个按钮以删除此动态添加的按钮。

1 个答案:

答案 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();
}