Qt实践录:一些界面设计的记录示例

本文主要记录使用 Qt 实现某一些小功能的示例。

控件特定条件下显示

有些场合,需要隐藏界面某些功能,面向特定人员使用,如一些维护升级工具,面向现场支持人员和面向开发人员,所用之功能不同,但又不想同时维护多个工具,则可以隐藏部分功能。
本节演示双击某个提示语(使用 QLabel),再显示另一个按钮的功能。
0、设计
界面有2个控件:一为 QLabel,控件名称为lbShow,显示提示语(文字可以为空,放置某个角落),一为 QPushButton,控件名称为btnRegister,表示某个功能的按钮。
1、声明(实际为重载)事件过滤函数eventFilter

bool eventFilter(QObject *watched, QEvent *event);

2、隐藏按钮,针对lbShow安装事件过滤器:

// 先隐藏注册按钮
ui->btnRegister->hide();
// 显示注册按钮的触发事件:// 双击左上方控件显示
ui->lbShow->installEventFilter(this);

3、实现事件过滤:


bool DialogDemo::eventFilter(QObject *watched, QEvent *event)
{
    // 针对lbShow控件
    if (watched == ui->lbShow)
    {
        //判断双击事件
        if (event->type() == QEvent::MouseButtonDblClick)
        {
            // 双击显示
            ui->btnRegister->show();
            return true;
        }
        else
        {
            return false;
        }
    }
    else
    {
        return QWidget::eventFilter(watched, event);
    }
}

关于eventFilter函数实现形式及返回值,可参考 Qt助手。一般来说,当自定义的事件处理完毕需要返回 true,如果不是监控的控件,交回父类处理。

发布了481 篇原创文章 · 获赞 244 · 访问量 110万+

猜你喜欢

转载自blog.csdn.net/subfate/article/details/104158010