购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 状态条

2.4.1 在状态条显示信息

若想在状态条显示信息,直接在主窗口QMainWindow需要的位置调用statusBar()->showMessage()操作即可。这个功能很有用,在没有介绍输出组件和QMessageBox以前,可以用该功能输出显示信息。下面的代码将原来用消息对话框弹出显示的信息,改为在状态栏输出信息。

void MainWindow::on_action_O_triggered()
{
    //输入以下用户代码
    //QMessageBox::information(this, "消息","选择了打开菜单项");
    statusBar()->showMessage(tr("选择了打开菜单项"));
}

2.4.2 在状态条添加部件

和工具条一样,在状态条中也可以添加窗口部件。下面的例子在状态条增加两个标签部件,显示鼠标的位置信息。通过这种方法,可以把进度条、标签等合适的部件放在状态条显示。

(1)在头文件中增加以下代码,包含标签部件的头文件,定义数据响应操作。

//增加头文件,引用QLabel
#include<QLabel>
    
…
Public:
…
//增加鼠标移动事件响应操作
    void mouseMoveEvent(QMouseEvent * event);
//增加两个标签
    QLabel *MouseX;
    QLabel *MouseY;

(2)在构造函数中,增加以下代码,设置显示标签的位置。

MouseX=new QLabel(ui->statusBar);
MouseX->setFixedWidth(50);
MouseX->setIndent(3);
    
MouseY=new QLabel(ui->statusBar);
MouseY->setFixedWidth(50);
MouseY->setIndent(3);
    
ui->statusBar->addWidget(MouseX);
ui->statusBar->addWidget(MouseY);
    
setMouseTracking(true);

(3)实现mouseMoveEvent操作,显示鼠标移动位置。

void MainWindow::mouseMoveEvent(QMouseEvent * event)
{
    MouseX->setNum(event->x());
    MouseY->setNum(event->y());
}

(4)编译运行,如图2-24所示。

图2-24 状态条显示程序运行界面 DfGOQoagPoZpgSy3nDbYBo2RukoK0j3lLWtl+aTS70Lq2qX2oEbV78siVeW0jr1E



2.5 系统拖盘图标

在开发系统服务和软件的时候,我们经常希望软件在后台或以隐藏的方式运行,希望在系统任务条的拖盘区显示软件运行的状态。Qt提供了QSystemTrayIcon类,可以实现在系统拖盘区响应用户的操作。

(1)在头文件中添加以下代码,包含QsystemTrayIcon模块头文件。

…
//添加以下头文件
#include<QSystemTrayIcon>
    
…
//添加QSystemTrayIcon 和被激活的操作
public:
  …
    QSystemTrayIcon * myTrayIcon;
public slots:
    void activated(QSystemTrayIcon::ActivationReason reason);
…

(2)在构造函数中添加以下代码,设置系统托盘图标和操作的关联。

…
//添加包含文件
#include<QSystemTrayIcon>
#include<QIcon>
    
//在构造函数中添加以下代码
MainWindow::MainWindow(QWidget *parent):
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    …
    QIcon systemIcon(":/qt-logo.png");
    myTrayIcon=new QSystemTrayIcon(systemIcon,this);
    myTrayIcon->show();
    myTrayIcon->showMessage("提示", "单击隐藏,双击显示主窗口");
    myTrayIcon->setContextMenu(ui->menu_F);
    
    connect(myTrayIcon,SIGNAL(activated(QSystemTrayIcon::ActivationReason  )),this,
        SLOT(activated(QSystemTrayIcon::ActivationReason  )));
    
}
…

(3)实现被激活的操作,这里简单地实现了当用户单击系统托盘图标时显示或隐藏主窗口。

void MainWindow::activated(QSystemTrayIcon::ActivationReason reason)
{
    switch(reason){
    case QSystemTrayIcon::Trigger:
        this->hide();
        break;
    case QSystemTrayIcon::DoubleClick:
        this->showNormal();
        break;
    default:break;
    }
    
}

上面代码中:

① myTrayIcon->showMessage("提示", "单击隐藏,双击显示主窗口")语句在系统拖盘增加图标时显示提示信息。

② myTrayIcon->setContextMenu(ui->menu_F)语句在用户右击时,弹出菜单。

③ activated(QSystemTrayIcon::ActivationReason reason)操作实现的是单击隐藏、双击显示的功能。 DfGOQoagPoZpgSy3nDbYBo2RukoK0j3lLWtl+aTS70Lq2qX2oEbV78siVeW0jr1E

点击中间区域
呼出菜单
上一章
目录
下一章
×