Я динамически добавляю кнопку, как мне использовать эту кнопку в другой пустоте в Qt? - PullRequest
0 голосов
/ 01 февраля 2019

Я динамически добавляю кнопку, например:

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 голосов
/ 01 февраля 2019

ваша кнопка определена внутри конструктора, поэтому после того, как вы выполните

btn->resize(100,100);
btn->show();

и выйдите из конструктора, у вас ничего не будет в руке, чтобы манипулировать кнопкой (что вам сейчас нужно)

Один из способов решить эту проблему - объявить кнопку в качестве члена класса, а затем вы можете использовать ее имя, чтобы изменить ее так, как вам нужно.

edit:

заголовок:

#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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...