zoukankan      html  css  js  c++  java
  • Qt学习总结-ui篇

    控件设置透明度:

      QGraphicsOpacityEffect *effect = new QGraphicsOpacityEffect(this);
    
      effect->setOpacity(0.9); //设置透明度    ui->widget->setGraphicsEffect(effect); //加在需要设置透明的控件上

    控件设置圆角边框:

    //通过控件的样式表即可实现

    ui->widget->setStyleSheet(“border-radius:3px;”);

    创建托盘图标:

    //加在ico图标
    
    QIcon icon = QIcon(“:/icofire.ico”);
    
    setWindowIcon(icon);
    
    //创建
    
       trayIcon = new QSystemTrayIcon(this);
    
        trayIcon=new QSystemTrayIcon(this);
    
    //关联曹函数,用于捕捉图标点击事件
    
    connect(trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(activated (QSystemTrayIcon::ActivationReason)));
    
    trayIcon->setIcon(icon);
    
    //设置上下文菜单
    
    //trayIcon->setContextMenu(this->trayIconMenu);
    
    trayIcon->show();

    窗口设置为无边框:

    this->setWindowFlags(Qt::FramelessWindowHint);

    控件重叠,即实现控件“浮动效果”:

      在界面存在布局的情况下,是无法将连个控件重叠在一起的,如果我们要实现界面中一部分控件“浮动”其他控件上的效果,可以通过栈布局的方式来实现。然而在默认情况下,栈布局同时只能显示一帧画面,要做到栈布局中所有控件同时显示,要用到一下代码:

    QStackedLayout*laylout=(QStackedLayout*)ui->stackedWidget->layout();
    
    laylout->setStackingMode(QStackedLayout::StackAll);

    QLabel标签添加点击事件:

      QLabel没有特定的信号槽来让我们处理点击事件,需要通过一下方法:

    为标签绑定点击事件的监听函数

    ui->label ->installEventFilter(this);
    
    重写窗体类的eventFilter()函数
    
    bool MainForm::eventFilter(QObject *obj, QEvent *event){
    
    if(obj==ui->label){
    
       //过滤出单击事件
    
            if (event->type() == QEvent::MouseButtonPress) {
    
                 //处理函数
    
                return true;
    
            }
    
    }
    
    //其他判断…
    
        return QWidget::eventFilter(obj,event);
    
    }

      注意,处理完点击事件后,如果 return true,这终止事件处理,反之消息将继续传播下去。

    QLabel 同时显示文字和图片:

      QLabel 在QDisginer编辑时可以通过属性窗口设置图片和文字,但最终程序运行时是不会同时显示的,即这两个属性会相互覆盖,只显示其一。为达到图文同时显示,可通过重载QLabel的 paintEvent()函数来实现,若我们在属性中设置好了图片,需显示额文字,可通过以下方法:

    void QCustLabel::paintEvent(QPaintEvent *event){
    
        //先按默认防止进行标签绘制
    
        QLabel::paintEvent(event);
    
    QPainter painter(this);
    
    //设置文字颜色
    
        painter.setPen(Qt::white);
    
        //要显示的可以作为一个成员变量
    
    QString info=this->desInfo;
    
    //设置文字信息的x坐标和y坐标
    
    //此处用了水平居中和垂直居中
    
        int x=this->width()/2-(this->fontMetrics().width(info)/2);
    
    int y=this->height()/2+(this->fontMetrics().height()/2);
    
    //绘出文字
    
        painter.drawText(QPoint(x,y),info);
    
    }

      此方法中用到了 Qt的二维绘图类 QPainter,此处使用的方法还是比较简单的,关于QPainter使用总结,会在接下来的文章中给出。

    由此,我们可以在label中随意指定文字、图片的显示方式。

    QTableView的简单使用方法:

      对于QTableView的内容修改,如设置表头、添加单元格内容,可不不直接操作该控件,操作控件的 model 即可。

    tableModel=new QStandardItemModel;
    
    //设置列数
    
    tableModel->setColumnCount(3);
    
        tableModel->setHeaderData(0,Qt::Horizontal,tr(“colum 0″));
    
        tableModel->setHeaderData(1,Qt::Horizontal,tr(“colum 1″));
    
        tableModel->setHeaderData(2,Qt::Horizontal,tr(“colum 2″));
    
       //为QTableView添加model
    
    ui->tableView->setModel(tableModel);
    
    为QTableView添加行:
    
    //清除所有行
    
    //tableModel->removeRows(0,tableModel->rowCount());
    
        for(int i=0;i<XXX;i++){
    
            tableModel->setItem(i,0,new QStandardItem(“xxx”));
    
            tableModel->setItem(i,1,new QStandardItem(“xxx”));
    
            tableModel->setItem(i,2,new QStandardItem(“xxx”));
    
        }
    
      //表格控件根据内容自动调整宽度和高度
    
        ui->tableView->resizeColumnsToContents();
    
        ui->tableView->resizeRowsToContents();
  • 相关阅读:
    日期类型存储方法
    Log4j2的一些记录
    【Maven】学习记录
    HTML 图片加载问题
    浏览器的组成
    javascript数组的实例属性(方法)
    javascript数组的内置对象Array
    javascript之this
    css的position,float属性的理解
    简单介绍帧动画
  • 原文地址:https://www.cnblogs.com/kyyblabla/p/3588255.html
Copyright © 2011-2022 走看看