[英]How to change QWindow or QWidget without openning new form?
I have QMainWindow
, and QWidget
like : 我有
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 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()
设置小部件的x
, y
, width
和height
,以及更好的方法:将此小部件添加到当前布局中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.