5.QT应用程序主窗口

本章代码见文末链接

主窗口框架

在这里插入图片描述
新建Qt Wisgets项目mymainwindow,类名默认MainWindow,基类默认QMainWindow

更改文字如图,如果中文无法直接输入,可以试试复制粘贴
在这里插入图片描述

“动作编辑器”中(默认在右下角),找到新建的动作
在这里插入图片描述
右键然后添加工具栏,objectName改为mainToolBar
将“动作编辑器”的“新建文件(&N)”文字拖到横线上,会有一个红色竖线提示位置正确
在这里插入图片描述
在这里插入图片描述

运行结果:(alt+F快捷键)
在这里插入图片描述

添加资源

使用图片logo(ui界面)

在项目的文件目录mymainwindow中新建文件夹images,放入图片

右键项目,选择“Add new…”,命名为myimages
在这里插入图片描述
新建后默认到如下打开qrc的界面,添加前缀改为如下,在选择添加文件,选择刚刚新建的放入图片的images文件夹,然后ctrl+S
![在这里插入图片描述](https://img-blog.csdnimg.cn/7ce3fb4ef44e4755b5ec8645eb1b5c9a.png
在ui界面双击“新建文件”动作(之前拖动的文字),点击“图标”后面的三个点,选择图片
在这里插入图片描述
在“Shortcut”后单击,按下ctrl+N,设为快捷键
在这里插入图片描述
运行结果:(按alt+F)
在这里插入图片描述
查看qrc资源文件的内容:
在这里插入图片描述
在这里插入图片描述
还有pro文件也已经增加了
在这里插入图片描述

使用图片logo(代码方式)

再以代码形式使用图片

//mainwindow.cpp构造函数中添加

#include<QMenu>
#include<QAction>
#include<QIcon>
 
    QMenu *editMenu=ui->menubar->addMenu(tr("编辑(&E)"));
    QAction *action_Open=editMenu->addAction(QIcon(":/image/images/bat.png"),tr(" 打开(&O)"));
    action_Open->setShortcut(QKeySequence("Ctrl+O"));
    ui->mainToolBar->addAction(action_Open);

运行结果:
在这里插入图片描述

菜单栏

//继续添加构造函数

#include<QActionGroup>

    QActionGroup *group=new QActionGroup(this);
    QAction *action_L=group->addAction(tr("Left(&L)"));
    action_L->setCheckable(true);
    QAction *action_R=group->addAction(tr("Right(&R)"));
    action_R->setCheckable(true);
    QAction *action_C=group->addAction(tr("Center(&C)"));
    action_C->setCheckable(true);
    action_L->setChecked(true);//指定为选中状态
    editMenu->addSeparator();
    editMenu->addAction(action_L);
    editMenu->addAction(action_R);
    editMenu->addAction(action_C);

运行结果:
在这里插入图片描述

工具栏

//继续添加构造函数

#include<QToolButton>
#include<QSpinBox>

    QToolButton *toolBtn=new QToolButton(this);
    toolBtn->setText(tr("Color"));
    QMenu *colorMenu=new QMenu(this);
    colorMenu->addAction(tr("Red"));
    colorMenu->addAction(tr("Green"));
    toolBtn->setMenu(colorMenu);
    toolBtn->setPopupMode(QToolButton::MenuButtonPopup);
    ui->mainToolBar->addWidget(toolBtn);
    QSpinBox *spinBox=new QSpinBox(this);
    ui->mainToolBar->addWidget(spinBox);

运行结果:
在这里插入图片描述

中心部件

.ui界面拖用MDI Area,右键“新建文件”动作,选择“转到槽”的triggered()
在这里插入图片描述

//自动转到mainwindow.cpp的on_action_N_triggered()槽

#include<QTextEdit>
#include<QMdiSubWindow>

    QTextEdit *edit=new QTextEdit(this);
    QMdiSubWindow *child=ui->mdiArea->addSubWindow(edit);
    child->setWindowTitle(tr("Multi-File-Edit"));
    child->show();

运行结果:ctrl+N,可输入文字
在这里插入图片描述

Dock部件

ui界面拖用Dock Widget,再拖入Push Button、Font Combo Box
Dock Widget的windowTitle属性改为“工具箱”
在这里插入图片描述

在文件菜单添加“显示Dock”菜单项,动作编辑器中右键“显示Dock”转到槽triggered()

//自动转到mainwindow.cpp的on_action_Dock_triggered()槽

#include<QDockWidget>

    ui->dockWidget->show();

运行结果:
在这里插入图片描述

点击“工具箱”后面的两个方框,dock可以悬浮,拖动可以再次固定到上下左右;
叉掉后再点击“显示dock”又出现
在这里插入图片描述

状态栏

//继续添加构造函数

#include<QLabel>

    ui->statusbar->showMessage(tr("Welcome!"),3000);
    QLabel *permanent=new QLabel(this);
    permanent->setFrameStyle(QFrame::Box|QFrame::Sunken);
    permanent->setText("www.qter.org");
    ui->statusbar->addPermanentWidget(permanent);

运行结果:“Welcome!”显示3秒,“www.qter.org”永久显示
在这里插入图片描述

自定义菜单

新建Qt Widgets项目myaction,其余默认
右键项目名,新建C++类如下
在这里插入图片描述
运行结果:输入后回车,显示文字在文本编辑器中
在这里插入图片描述

富文本处理

新建Qt Widgets项目myrichtext,其余默认
直接敲代码,然后运行(代码见文末链接)

运行结果:
在这里插入图片描述
点击“Frame”,Debug处显示如下:
在这里插入图片描述
点击“textBlock”,Debug处显示如下:
在这里插入图片描述
若点击font(在哪里点击,就出现在哪个框中)
在这里插入图片描述
插入表格、列表、图片(图片放到myrichtext文件夹,并在槽中改名即可)

void MainWindow::insertImage()
{
    QTextImageFormat format;
    format.setName("../myrichtext/QQ.png");
    ui->textEdit->textCursor().insertImage(format);
}

在这里插入图片描述
“查找”功能在Debug处显示位置
在这里插入图片描述
右键项目名,新建C++类mysyntaxhighlighter,基类选择QSyntaxHighlighter,如下:
在这里插入图片描述
输入单词“char”,会高亮显示
在这里插入图片描述

拖放操作

使用拖放打开文件

已经解决:拖放到主窗口,显示乱码
在这里插入图片描述

//mainwindow.cpp中

void MainWindow::dropEvent(QDropEvent *event)
{
    const QMimeData *mimeData=event->mimeData();
    if(mimeData->hasUrls()){
        QList<QUrl>urlList=mimeData->urls();
        QString fileName=urlList.at(0).toLocalFile();
        if(!(fileName.isEmpty())){
            QTextCodec *codec = QTextCodec::codecForName("UTF-8");
            QFile file(fileName);
            if(!(file.open(QIODevice::ReadOnly))) return;
            QTextStream in(&file);
            in.setCodec(codec);
            ui->textEdit->setText(in.readAll());
        }
    }
}

运行结果:拖放到文本编辑器中,显示路径
在这里插入图片描述
拖放到主窗口,显示文本内容
在这里插入图片描述

自定义拖放操作

直接敲代码,然后运行(代码见文末链接)

//在三个槽中保留同一个event的Action,即可选择拖动/复制功能
void MainWindow::dragEnterEvent(QDragEnterEvent *event) // 拖动进入事件
void MainWindow::dragMoveEvent(QDragMoveEvent *event)   // 拖动事件
void MainWindow::dropEvent(QDropEvent *event) // 放下事件

//下面两行自选一行,另一行注释掉
//             event->setDropAction(Qt::MoveAction);
             event->setDropAction(Qt::CopyAction);

运行结果:
MoveAction:拖动有阴影
CopyAction:拖动有阴影,松开即复制
在这里插入图片描述

打印文档

运行结果:
点击“预览”
在这里插入图片描述
点击“生成”,(以Release模式运行),在build…Realease文件夹中找到demo.pdf
在这里插入图片描述

参考书目

Qt Creator快速入门第三版

本章代码及使用方法

本章代码

遇到各种提示都点“OK”或者“Yes”(主要是关于版本的兼容性提示)

遇到如下问题的解决方法:
在这里插入图片描述
在“项目”模式的“Build & Run”点击“绿色加号”(任选一个),再回到“编辑”模式
在这里插入图片描述
直接点击“绿色箭头”即可运行
在这里插入图片描述
该方法同样适用于打开Qt Creator自带的“欢迎”界面的案例项目

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

B.D.S.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值