我有QMainWindow
和QWidget
喜欢:
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或更多。能帮助我怎么做吗?
答案 0 :(得分:2)
在没有父级的Qt
窗口小部件中是一个单独的窗口。所以答案很简单:只需设置父级。例如:
editUserWindow = new EditUser(this);//inside mainwindow, mainwinodw is a parent of EditUser
editUserWindow->show();
但是在这种情况下,editUserWindow
将被放置在0,0
位置(在父坐标中)(左上角),因此您有两种方法。使用setGeometry()
设置小部件的x
,y
,width
和height
,以及更好的方法:将此小部件添加到当前布局中。