1、新建一个新的Qt Gui应用,项目名称随意,例如MyMainWindow,基类选择QMainWindow,类名为MainWindow。

2、项目建立后,双击mainwindow.ui文件,在界面的“在这里输入”的地方进行双击,改写为“文件(&F)”,并按下回车键。此时,界面左上角显示“文件(F)”,并将其快捷键设置为Alt+F。

3、同理,在文件的下拉菜单中添加“新建”选项。此时,在Action编辑器中可以看到刚添加的新建菜单,如下图第一行所示。

4、双击action_N,可以打开"新建"选项的动作编辑属性对话框,如下图所示。并设置其快捷键为Ctrl+N。注意图标后面的黑色下拉箭头可以用于选择添加资源还是添加文件。通过该箭头选择添加资源,可以实现对新建选项对应图标的添加。此处,我们需要事先在项目中添加图标文件,才能在该下拉箭头添加资源时找到对应的图标,做法见下步。

5、在工程项目单击右键选择添加新文件,同时选择Qt下的Qt资源文件,并设置名称为myResources,此时,工程中多了后缀为qrc的资源文件,并自动切换到该文件所在的界面。通过点击界面左下角的添加按钮进行图标资源的添加。此时需要先添加前缀,再添加文件。前缀默认为/new/prefix1,此时可以根据添加对象的名称随便修改,但不要用中文,完成之后注意保存文件。添加完成如下图所示。

6、此时,重新回到新建动作属性对话框,单击图标选项末端的黑色下拉箭头,选择添加资源,选择对应的图标。完成之后,在相应的ui文件中显示新建选项前出现对应图标,同时运行后,显示相应的效果。

7、前面演示了通过ui文件来进行菜单栏选项的添加,下面通过程序来实现菜单栏及其下拉菜单各个选项、工具栏、状态栏以及添加悬浮工具窗和建立文本窗编辑器的方法。

 #include "mainwindow.h"
#include "ui_mainwindow.h"
#include "qtextcodec.h"
#include <QToolButton>
#include <QSpinBox>
#include <QTextEdit>
#include<QMdiSubWindow>
#include<QLabel> MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());//解决中文字符乱码问题 QAction *openAction = new QAction(tr("&打开"), this); // 创建新的动作
QIcon icono(":/myImages/fileopen.png");// 添加图标
openAction->setIcon(icono);
openAction->setShortcut(QKeySequence(tr("Ctrl+O"))); // 设置快捷键
ui->menu->addAction(openAction); // 在文件菜单中设置新的打开动作 QAction *saveAction = new QAction(tr("&保存"), this);
QIcon icons(":/myImages/filesave.png");
saveAction->setIcon(icons);
saveAction->setShortcut(QKeySequence(tr("Ctrl+S")));
ui->menu->addAction(saveAction); QAction *saveasAction = new QAction(tr("&另保存"), this);
QIcon icona(":/myImages/filesaveas.png");
saveasAction->setIcon(icona);
saveasAction->setShortcut(QKeySequence(tr("Ctrl+A")));
ui->menu->addAction(saveasAction); QMenu *editMenu = ui->menuBar->addMenu(tr("编辑(&E)"));//使用ui->menuBar来获取QMainWindow的菜单栏
QAction *findAction = editMenu->addAction(tr("&查找"));
QIcon iconf(":/myImages/filefind.png");
findAction->setIcon(iconf);
findAction->setShortcut(QKeySequence(tr("Ctrl+F"))); QMenu *helpMenu = ui->menuBar->addMenu(tr("帮助(&P)")); QActionGroup *group = new QActionGroup(this);//建立动作组
QAction *action_L = group->addAction(tr("左对齐(&L)"));
action_L->setCheckable(true);//状态可选中
QAction *action_R = group->addAction(tr("右对齐(&R)"));
action_R->setCheckable(true);
QAction *action_C = group->addAction(tr("居中(&C)"));
action_C->setCheckable(true);
action_L->setChecked(true);//指定action_L为选中状态
editMenu->addSeparator();//向菜单栏中添加间隔器,编辑的下拉菜单最后选项下面添加一条水平分隔线
editMenu->addAction(action_L);//向菜单中添加动作
editMenu->addAction(action_R);
editMenu->addAction(action_C); QToolButton *toolBtn = new QToolButton(this);
toolBtn->setText(tr("颜色"));
QMenu *colorMenu = new QMenu(this);
colorMenu->addAction(tr("红色"));
colorMenu->addAction(tr(" 绿色"));
toolBtn->setMenu(colorMenu);
//设置弹出模式,右侧有小箭头用于下拉菜单选择。去掉该句,需要长按tooBtn才能弹出下拉菜单
toolBtn->setPopupMode(QToolButton::MenuButtonPopup);
ui->mainToolBar ->addWidget(toolBtn);//里哟个addWidget()函数向工具栏中添加部件
QSpinBox *spinBox = new QSpinBox(this);
ui->mainToolBar->addWidget(spinBox); //显示临时消息,显示2000毫秒即2秒钟
ui->statusBar->showMessage(tr("欢迎使用Qt"), );
//创建标签,设置标签样式并显示消息,然后将其以永久部件的形式添加到状态栏
QLabel *permanent = new QLabel(this);
permanent->setFrameStyle(QFrame::Box | QFrame::Sunken);
permanent->setText(tr("Qt窗口设计"));
ui->statusBar->addPermanentWidget(permanent); //添加永久性信息 } MainWindow::~MainWindow()
{
delete ui;
} void MainWindow::on_action_N_triggered()
{
QTextEdit *edit = new QTextEdit(this);//新建文本编辑器部件
//使用QWdiArea类的addSunWindow()函数创建子窗口,以文本编辑器为中心部件
QMdiSubWindow *child = ui->mdiArea->addSubWindow(edit);
child->setWindowTitle(tr("多文档编辑器子窗口"));
child->show();
} void MainWindow::on_action_Dock_triggered()
{
ui->dockWidget->show();
}

8、在界面中添加中心部件(如多文档编辑器)或者Dock部件(如工具箱),需要在ui界面文件中拖入一个MidArea部件或者一个Dock部件,并在Action编辑器中找到对应的部件,单击右键选择“转到槽”,为其添加一个triggered()函数,编写其相应的功能。同时还可以在右侧对这些部件进行属性设置。

9、设置完毕后,运行效果如下面的截图所示。

初识Qt窗口界面的更多相关文章

  1. QT+UI界面初识+界面与编辑区结合操作

    图片中时UI界面的初识,了解界面部件都是干啥的: 有了界面之后,使得QT的开发变的更加的便捷,但是在ui界面有时满足不了的功能,就需要使用代码解决,怎么利用代码呢? 首先:打开程序编辑区: #incl ...

  2. 深度探索QT窗口系统(五篇)

    窗口作为界面编程中最重要的部分,没有窗口就没有界面,是窗口让我们摆脱了DOS时代,按钮是一个窗口,文本框是一个窗口,标签页是一个窗口,...一个窗口可以由多个窗口组成,每天我们都在与窗口打交道,当你打 ...

  3. 调色板类QPalette——包含了Qt窗口不见的颜色组(collor group),和Windows右键属性外观非常类似

    QPalette类包含了Qt窗口不见的颜色组(collor group); 1.Active组,该组的颜色用户当前活动的(active)窗口,即具有键盘或鼠标焦点的窗口; 2.Inactive组,该组 ...

  4. Qt窗口定制

    qt中的QWidget窗口支持窗体绘制,但是不支持窗口标题栏绘制,想要美观的界面,还需要自己去定制,下面我就介绍一种定制窗体的方法 一个窗口无非就3部分,标题栏.窗体和状态栏,接下来我定制的窗口没有状 ...

  5. 1初识QT

    创建程序步骤: 打开Qt Creator 界面选择 New Project或者选择菜单栏 [文件]-[新建文件或项目]菜单项 弹出New Project对话框,选择Qt Widgets Applica ...

  6. [OpenCV Qt教程] 在Qt图形界面中显示OpenCV图像的OpenGL Widget (第一部分)

    本文译自:http://www.robot-home.it/blog/en/software/tutorial-opencv-qt-opengl-widget-per-visualizzare-imm ...

  7. 外部进程嵌入到Qt进程界面(使用QWindow::fromWinId)

    有时候需要做框架集成的东西,需要把其他客户端像组件一样集成到一个客户端中,类似于一个软件集成的平台客户端,统一用一个中心管理的客户端做类似于控制面板一样的东西去调用不同的软件.此时就必须相应不同的点击 ...

  8. 将QT窗口嵌入到WinForm窗口

    要想 windows下抓取Qt进程主界面,并嵌入到自己的程序中显示,需要首先设置qt窗口的windowTitle属性,然后就可以通过 windows api 中的 FindWindow 函数查找到窗口 ...

  9. 快速全面了解QT软件界面开发技术

    快速全面了解QT软件界面开发技术     目录 前言 一. 学习QT可能的目的是什么? 只想体验一下QT? 当前的项目选择了用QT. 为将来做QT技术储备. 二. QT的核心技术优势是什么? QT在软 ...

随机推荐

  1. 宝塔面板nginx配置安装Discuz

    Discuz!在Nginx下的Rewrite 需要说明的是,下网上以前一直流传的Rewrite都是有误的. 下面的Rewrite中百分号前面多了个转移字符"",这在Apache中是 ...

  2. P/Invoke出现错误 System.NullReferenceException”类型的未经处理的异常在 未知模块。 中发生 未将对象引用设置到对象的实例。

    问题 “System.NullReferenceException”类型的未经处理的异常在 未知模块. 中发生 未将对象引用设置到对象的实例. 解决方案 1.尝试 用管理员身份运行CMD,输入nets ...

  3. 最好最实用的二次开发教程 cms

    ◆二次开发 什么是二次开发? 二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能和效果,一 般来说都不会改变原有系统的内核. 为什么要二次开发? 随着信息化技术的不断 ...

  4. Action 中获取表单数据的三种方式

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53138905  冷血之心的博客) Action 中获取表单提交数据 ...

  5. 安卓脱壳&&协议分析&&burp辅助分析插件编写

    前言 本文由 本人 首发于 先知安全技术社区: https://xianzhi.aliyun.com/forum/user/5274 前言 本文以一个 app 为例,演示对 app脱壳,然后分析其 协 ...

  6. 生成项目目录结构(based on windows system)

    描述: 作为程序员,在工作中,我们经常会有需求,需要罗列出项目的结构图:如果手工来整理的话,太过浪费时间,其实我们可以借助tree命令来快速生成目录结构. 本文主要介绍一下,基于windows系统,如 ...

  7. maven jstl、jsp、servlet依赖

    jstl.jsp.servlet依赖 <dependency> <groupId>javax.servlet</groupId> <artifactId> ...

  8. @transient加在属性前的作用

    我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable ...

  9. libgdx自问自答

    1.使用gdx-steup.jar生成的desktop项目导入idea运行报如下错误,如何解决? 答:原因是assets目录默认是普通目录,idea编译项目时不会把普通目录下的内容输出到classpa ...

  10. Grunt-学习。

    Grunt 依赖 Node.js 所以在安装之前确保你安装了 Node.js.然后开始安装 Grunt 实际上,安装的并不是 Grunt,而是 Grunt-cli,也就是命令行的 Grunt,这样你就 ...