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

时间:2014-12-08 18:24:08

标签: c++ qt qwidget

我有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;
};

当触发actionEditUser时,我正在创建新表单:

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

但是我不想打开/创建新表单。我想将QWidget(EditUser)粘贴到QMainWindow。因此,应用程序只能处理1个表单,而不是2,3或更多。能帮助我怎么做吗?

1 个答案:

答案 0 :(得分:2)

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

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

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