八、Qt Creator实现状态栏显示

本文详细介绍了如何在文本编辑器中实现状态栏的功能,包括状态栏的初始化、显示光标位置、处理文件操作反馈等。通过实例代码,展示了状态栏在文本编辑器中的应用,使用户能够实时了解编辑器的当前状态。

声明:本文原创于yafeilinux的百度博客,http://hi.baidu.com/yafeilinux 转载请注明出处。

在程序主窗口Mainwindow中,有菜单栏,工具栏,中心部件和状态栏。前面几个已经讲过了,这次讲解状态栏的使用。

程序中有哪些不明白的类或函数,请自己查看帮助。

1.我们在mainwindow.h中做一下更改。

加入头文件包含: #include

加入私有变量和函数:

QLabel* first_statusLabel; //声明两个标签对象,用于显示状态信息

QLabel* second_statusLabel;

void init_statusBar(); //初始化状态栏

加入一个槽函数声明:void do_cursorChanged(); //获取光标位置信息

2.在mainwindow.cpp中加入状态栏初始化函数的定义。

void MainWindow::init_statusBar()

{

QStatusBar* bar = ui->statusBar; //获取状态栏

first_statusLabel = new QLabel; //新建标签

first_statusLabel->setMinimumSize(150,20); //设置标签最小尺寸

first_statusLabel->setFrameShape(QFrame.:WinPanel); //设置标签形状

first_statusLabel->setFrameShadow(QFrame.:Sunken); //设置标签阴影

second_statusLabel = new QLabel;

second_statusLabel->setMinimumSize(150,20);

second_statusLabel->setFrameShape(QFrame.:WinPanel);

second_statusLabel->setFrameShadow(QFrame.:Sunken);

bar->addWidget(first_statusLabel);

bar->addWidget(second_statusLabel);

first_statusLabel->setText(tr("欢迎使用文本编辑器")); //初始化内容

second_statusLabel->setText(tr("yafeilinux制作!"));

}

这里将两个标签对象加入到了主窗口的状态栏里,并设置了他们的外观和初值。

3.在构造函数里调用状态栏初始化函数。

init_statusBar();

这时运行程序,效果如下。

8adc71f598f42840dcc4747c.jpg

4.在mainwindow.cpp中加入获取光标位置的函数的定义。

void MainWindow::do_cursorChanged()

{

int rowNum = ui->textEdit->document()->blockCount();

//获取光标所在行的行号

const QTextCursor cursor = ui->textEdit->textCursor();

int colNum = cursor.columnNumber();

//获取光标所在列的列号

first_statusLabel->setText(tr("%1行 %2列").arg(rowNum).arg(colNum));

//在状态栏显示光标位置

}

这个函数可获取文本编辑框中光标的位置,并显示在状态栏中。

5.在构造函数添加光标位置改变信号的关联。

connect(ui->textEdit,SIGNAL(cursorPositionChanged()),this,SLOT(do_cursorChanged()));

这时运行程序。效果如下。

c39730c3e143001be4dd3b7c.jpg

6.在do_file_Load函数的最后添加下面语句。

second_statusLabel->setText(tr("打开文件成功"));

ebde94c51c64c6878326ac7d.jpg

7.在saveFile函数的最后添加以下语句。

second_statusLabel->setText(tr("保存文件成功"));

c6e87809ef199a1ee824887d.jpg

8.在on_action_Find_triggered函数的后面添加如下语句。

second_statusLabel->setText(tr("正在进行查找"));

f82b77fb8e1ca3b958ee907d.jpg

9.在on_action_Close_triggered函数最后添加如下语句。

first_statusLabel->setText(tr("文本编辑器已关闭"));

second_statusLabel->setText(tr("yafeilinux制作!"));

0268db0eebda7ec3aa64577c.jpg

最终的mainwindow.cpp文件内容如下。

36c16294c5c387267af480d4.jpg
96dce217c0432a7ff2de32d4.jpg
6b3dfd8af9a72dfdfc1f10d4.jpg
ee3a2d675baf8c0aaa184cd4.jpg
8593294fc0e15427b2de05d4.jpg
122a5172346d36328601b0d5.jpg

最终的mainwindow.h文件如下。

6e14aa38bfbfbfdd3b87ced2.jpg
cf1ade45b68bdcacb3b7dcd2.jpg

j_0043.gif

到这里整个文本编辑器的程序就算写完了。我们这里没有写帮助菜单的功能实现,大家可以自己添加。而且程序中也有很多漏洞和不完善的地方,如果有兴趣,大家也可以自己修改。因为时间和篇幅的原因,我们这里就不再过多的讲述。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22785983/viewspace-662982/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22785983/viewspace-662982/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值