简体   繁体   English

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

[英]How to change QWindow or QWidget without openning new form?

I have QMainWindow , and QWidget like : 我有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 is : QWidget是:

namespace Ui {
class EditUser;
}

class EditUser : public QWidget
{
    Q_OBJECT

public:
    explicit EditUser(QWidget *parent = 0);
    ~EditUser();

private:
    Ui::EditUser *ui;
};

And when actionEditUser is triggered I am creating new form: 当actionEditUser触发时,我正在创建新表单:

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

However I do not want to open/create new form. 但是,我不想打开/创建新表格。 I want to paste QWidget(EditUser) to QMainWindow . 我想将QWidget(EditUser)粘贴到QMainWindow So that appliction can work on just 1 form, instead of 2,3 or more. 因此,该申请只能使用一种形式,而不是2,3或更多。 Could you please kindly help me how to do it? 您能帮我怎么做吗?

In Qt widget without parent is a separate window. 在没有父项的Qt小部件中,是一个单独的窗口。 So answer is simple: just set parent. 因此答案很简单:只需设置父项即可。 For example: 例如:

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

But in this case editUserWindow will be placed at 0,0 position(in parent coordinates)(top left) , so you have 2 approaches. 但是在这种情况下, editUserWindow将被放置在0,0位置(在父坐标中)(左上),因此您有2种方法。 Use setGeometry() to set x , y , width and height of widget, and better approach: add this widget to your current layout. 使用setGeometry()设置小部件的xywidthheight ,以及更好的方法:将此小部件添加到当前布局中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM