ChatNova——登录界面设置
实现登录界面点击注册按钮后,主窗口显示注册页面
效果展示:
主窗口 (MainWindow) 启动时显示 登录对话框 (LoginDialog).
登录对话框 上的注册按钮 (reg_btn) 被点击后,触发 switchRegister 信号。
该信号连接到 主窗口 (MainWindow) 的 SlotSwitchReg 槽函数,执行切换操作。
在 SlotSwitchReg 槽函数中,登录对话框被隐藏,注册对话框 (RegisterDialog) 被设置为新的核心部件并显示。
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
_login_dlg = new LoginDialog();
setCentralWidget(_login_dlg);//设置到mainwindow的核心组件里
_login_dlg->show();//上面的第一步
//创建和注册消息界面的连接
// 该信号连接到 主窗口 (MainWindow) 的 SlotSwitchReg 槽函数,执行切换操作。
connect(_login_dlg, &LoginDialog::switchRegister, this, &MainWindow::SlotSwitchReg); _reg_dlg = new RegisterDialog();
}
void MainWindow::SlotSwitchReg()
{
setCentralWidget(_reg_dlg);
_login_dlg->hide();
_reg_dlg->show();
}
//下面是LoginDialog.cpp
LoginDialog::LoginDialog(QWidget *parent)
: QDialog(parent)
, ui(new Ui::LoginDialog)
{
ui->setupUi(this);
connect(ui->reg_btn,&QPushButton::clicked,this,&LoginDialog::switchRegister);//注册按钮 (reg_btn) 被点击后,触发 switchRegister 信号。
}
布置界面颜色
|
内存泄漏修复
关掉上面的界面时,程序出现了异常崩溃。
21:23:19: Starting F:\04Code\QT\ChatNova_linff911\build\Desktop_Qt_6_9_1_MinGW_64_bit-Debug\bin\ChatNova_linff911.exe…
open success
21:23:35: 进程崩溃了。
|
但是会导致出现多个窗口,dialog并没有嵌入mainwindow中
解决:首先把登录dialog和注册dialog设置大小和mainwindow一致.然后设置
_login_dlg->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint);
通过设置这些窗口标志,实际上把dialog窗口的外观修改为无框且不独立的。这使得dialog的表现更像是嵌入在MainWindow内部,而不是作为一个独立的窗口弹出,从而避免了出现多个独立窗口的情况。
|
邮箱输入不合法会报红提示
void RegisterDialog::on_get_code_clicked() |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小林小林爱编程!
评论