如何在不打开新表单的情况下更改 QWindow 或 QWidget

How to change QWindow or QWidget without openning new form?

本文关键字:情况下 QWidget QWindow 表单 新表单      更新时间:2023-10-16

我有QMainWindowQWidget像:

 namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
private slots:
    void on_actionUserAdd_triggered();
    void on_actionEditUser_triggered();
    void on_actionShow_User_triggered();
private:
    Ui::MainWindow *ui;
    EditUser *editUserWindow;
    ShowUser *showUserWindow;
};

QWidget是:

namespace Ui {
class EditUser;
}
class EditUser : public QWidget
{
    Q_OBJECT
public:
    explicit EditUser(QWidget *parent = 0);
    ~EditUser();
private:
    Ui::EditUser *ui;
};

当触发操作编辑用户时,我正在创建新表单:

editUserWindow = new EditUser();
editUserWindow->show();

但是我不想打开/创建新表单。我想将QWidget(编辑用户)粘贴到QMainWindow。因此,应用程序可以只在 1 种形式上工作,而不是 2,3 种或更多。你能帮我怎么做吗?

Qt没有

父级的小部件是一个单独的窗口。所以答案很简单:只需设置父母。例如:

editUserWindow = new EditUser(this);//inside mainwindow, mainwinodw is a parent of EditUser
editUserWindow->show();

但在这种情况下,editUserWindow将被放置在0,0位置(在父坐标中)(左上角),因此您有 2 种方法。使用setGeometry()设置小部件的xywidthheight,更好的方法:将此小部件添加到当前布局中。