Qt 学习笔记(三):界面跳转、资源文件与主窗体

发布于 11 天前  47 次阅读


Qt 学习笔记(三):界面跳转、资源文件与主窗体

围绕多界面程序设计,整理新界面类、对话框跳转、资源文件,以及 QMainWindow 的菜单、工具栏和状态栏。

添加新的界面类

右键项目名,在弹出的右键菜单中选择 【添加新文件】

image-20251009144149325

选择【Qt】-【Qt Widgets Designer Form Class】-【选择】

image-20251009144236620

选择界面模板,提供了三种界面类,主窗体选择 【MainWindow】,对话框选择【Dialog】, 一般不选【Widget】。

image-20251009144422485

如果是主界面,则类名默认即可,其他的界面,一般要修改类名,如关于对话框可起名为 AboutDialog

image-20251009144553549

最后,点击完成即可。

image-20251009144617598

界面类添加完成后,在需要使用该类型实例化对象时,和一般的类的使用差不多:包含头文件,实例化对象,调用各种成员函数。

对话框跳转到主界面

QDialog类提供了accept方法, 该函数能隐藏对话框,并设置对话框的退出状态码为 QDialog::Accepted

QDialog类提供了exec方法,该函数能显示对话框,阻塞,直到对话框关闭,并获取对话框的退出状态码。

使用这两个函数,可实现界面隐藏与跳转。

使用示例

在登录对话框中,当输入正确时,调用它的accept函数。


this->accept();

在主函数中,调用对话框的exec函数,判断退出状态码,决定是否需要显示新的界面


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


    LoginDialog w; // 创建登录界面对象,默认情况下,不显示
    MainWindow mw; // 创建主界面对象,默认情况下,不显示


    int code = w.exec(); // 调用登录对话框的exec函数,显示对话框,阻塞直到对话框关闭,并获取其退出状态码
    // 判断登录对话框的退出状态码
    if (code == QDialog::Accepted)
    {
        // 登录成功,显示主界面
        mw.show();
    }


    return a.exec();
}

添加资源文件

image-20251009161420097

image-20251009161448774

image-20251009161555981

image-20251009161624405

image-20251009162723198

image-20251009162835100

image-20251009163126957

最后,保存(ctrl+S)。添加成功后,效果如下:

image-20251009163238593

主窗体

主窗体MainWindow一般由四部分组成:menubar, toolbar, centeralwidget, statusbar

菜单

image-20251009172814124

工具栏

image-20251009171536046

状态栏

在状态栏上可显示两种信息,临时信息与持久信息。

临时信息使用 showMessage函数即可, 临时信息显示在状态栏的左侧。


ui->statusbar->showMessage("点击了菜单项-打开"); // 一直显示,直到下一次调用showMessage函数覆盖此文本
ui->statusbar->showMessage("点击了菜单项-保存", 5000);// 显示5秒,自动清除

持久信息需要使用控件显示,如使用标签。持久信息显示在状态栏的右侧。

image-20251009171234939

效果如下:

image-20251009173004035


"When faced with uncertainty, ask the spring breeze."