QT上位机开发(文本编辑器的界面开发)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

文本编辑器是编程开发中经常使用到的一个软件,比如说notepad++就是其中一种。这里说编写一个文本编辑器,并不是说真的要写一个和notepad++一模一样的软件。如果是那样,那么工作量也太大了。我们主要是想借助于文本编辑器这样一个软件,了解下常规软件的菜单、工具栏和状态栏是怎么设计的,槽函数应该怎么写等等。

1、创建一个widget工程

首先我们需要创建一个基础的widget工程,这个工程就负责显示一个最简单的窗口。

2、添加菜单选项

菜单部分,可以通过代码编写的方式来实现,也可以通过designer软件添加来实现。事实上,个人觉得通过designer添加更加方便一点。默认ui文件中也是添加了菜单栏的,我们只需要在菜单栏里面把菜单加上即可。当然,这里的菜单还可以分成一级菜单、二级菜单。大家根据自己的需要灵活进行设置。

3、工具栏

工具栏本身很多的功能,其实就是菜单里面的功能。只不过由于这些功能使用频率比较高,如果放在外面的话,会更加方便一点。那么在designer上面是怎么实现的呢?一般就是点击右下角的动作编辑器,把对应的action拖移到工具栏即可。

4、状态栏

和前面菜单栏、工具栏相比较,状态栏的添加目前一般都是通过编码来实现的。比如说,如果是状态栏上面需要添加一个label控件,我们一般会添加这么几行代码,

	// add label for status bar
	QLabel *label = new QLabel("@V1.0", this);
	ui.statusBar->addWidget(label);

5、添加QTextEdit

当然,因为我们本次编写的是一个文本编辑工具,所以QTextEdit还是需要的。直接选中之后,拖到窗口上面,调整一下大小即可。

6、添加菜单关联函数

前面我们只是添加了菜单、工具栏和状态栏。但是还没有把菜单、工具栏和具体的函数bind在一起。为了实现这一点,首先需要定义一个槽函数,首先添加在h头文件当中,

class QtWidgetsApplication : public QMainWindow
{
    Q_OBJECT

public:
    QtWidgetsApplication(QWidget *parent = nullptr);
    ~QtWidgetsApplication();

private:
    Ui::QtWidgetsApplicationClass ui;

private slots:
	void new_file();

};

接着,在窗口的构造函数中,把按钮和槽函数连接在一起。注意,因为在ui文件中,对应的动作已经设定好了,所以直接借助于ui就可以访问到,

QtWidgetsApplication::QtWidgetsApplication(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);

	// add label for status bar
	QLabel *label = new QLabel("@V1.0", this);
	ui.statusBar->addWidget(label);

	// add function for menu
	connect(ui.actionNew, SIGNAL(triggered()),this, SLOT(new_file()));

}

最后一步,就是实现对应的菜单回调函数即可。这里为了简单、方便,仅仅是弹出了一个对话框来进行表示一下,

void QtWidgetsApplication::new_file()
{
	QMessageBox::information(nullptr, "new", "Menu new was triggered!");
}

7、测试验证

上面所有工作都准备好之后,就可以直接编译测试了。因为功能不多,测试的内容也有限,所以并不是很复杂。主要就是看看按钮、工具栏、状态栏是不是显示正常、edit窗口是不是可以进行多行数据编辑、菜单单击后有没有对话框弹出等等。传统的软件中,菜单、工具栏、状态栏都是标配,大家可以好好掌握下,这样不管具体的功能做的怎么样,至少面上看上去是一个完整的软件。

相关推荐
小叶学C++10 分钟前
【C++】类与对象(下)
java·开发语言·c++
ac-er888812 分钟前
PHP“===”的意义
开发语言·php
jk_10130 分钟前
MATLAB中decomposition函数用法
开发语言·算法·matlab
weixin_4640780731 分钟前
C#串口温度读取
开发语言·c#
无敌の星仔33 分钟前
一个月学会Java 第2天 认识类与对象
java·开发语言
豆豆1 小时前
为什么用PageAdmin CMS建设网站?
服务器·开发语言·前端·php·软件构建
落落落sss1 小时前
MybatisPlus
android·java·开发语言·spring·tomcat·rabbitmq·mybatis
简单.is.good2 小时前
【测试】接口测试与接口自动化
开发语言·python
Yvemil72 小时前
MQ 架构设计原理与消息中间件详解(二)
开发语言·后端·ruby
程序员是干活的2 小时前
私家车开车回家过节会发生什么事情
java·开发语言·软件构建·1024程序员节