QT子窗口在父窗口上显示

之前做测试的时候试过
忘了记录保存
又再找一遍
 
所以还是记起来吧
 
项目服务器需要左边是菜单,右边显示不同菜单界面,总不可能都放在同一个窗口中吧
于是上网找到了这种方法

1、在点击触发某个槽函数以后,创建一个窗口

Log= new Server_Login(this);//创建一个窗口
Password->hide();//上一个窗口隐藏
Log->show();//显示这个窗口
Log->move(256,0);//把子窗口起始移到父窗口的某个坐


2、在新窗口(Server_Login)的构造函数中加上

setWindowFlags(Qt::CustomizeWindowHint|Qt::FramelessWindowHint);//设置子窗口属性

this->setParent(parent);//设置依附的窗口


END

Qt中,创建一个可显示父窗口上的窗口通常涉及到以下几个步骤: 1. **创建窗口**: 在`myform.cpp`或`logindlg.cpp`这样的窗口类定义中(如`QDialog`或自定义窗口类),设计并构建所需的界面。 ```cpp // logindlg.cpp 或 myform.cpp class LoginDlg : public QDialog { Q_OBJECT private slots: void submitData(); // 按钮点击事件,将在下面定义 public: explicit LoginDlg(QWidget *parent = nullptr); }; ``` 2. **槽函数提交数据**: 当窗口内的操作完成(如表单填写)时,可以设置一个槽函数来处理数据并将它们发送到父窗口。 ```cpp // 在logindlg.cpp中 void LoginDlg::submitData() { // 获取表单数据 QString username = ui->usernameLineEdit->text(); int password = ui->passwordLineEdit->text().toInt(); // 创建信号发射器 emit sendData(username, password); // 假设有一个名为sendData的信号 } ``` 3. **在父窗口接收数据**: 在`mainwindow.cpp`或其他父窗口类中,声明一个信号连接槽以接收窗口的数据。 ```cpp // mainwindow.cpp 或 main.cpp class MainWindow : public QMainWindow { Q_OBJECT public slots: void receiveData(const QString &username, int password); // 接收数据的槽函数 signals: void sendDataToParent(const QString &username, int password); // 发送数据的信号 protected: void createLoginWindow(); }; ``` 4. **建立连接**: 在`MainWindow`的构造函数或适当位置,通过`connect`函数将信号与槽关联起来。 ```cpp // 在MainWindow构造函数中 MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) { connect(loginDlg, &LoginDlg::sendData, this, &MainWindow::sendDataToParent); } void sendDataToParent(const QString &username, int password) { // 处理接收到的数据,在父窗口显示或做其他操作 qDebug() << "Received data: Username - " << username << ", Password - " << password; } void createLoginWindow() { LoginDlg loginDlg(this); loginDlg.show(); } ``` 这样,当窗口中的表单数据准备好时,会通过信号`sendData`传递给父窗口,然后由父窗口的槽函数`receiveData`处理。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值