• Qt开发经验小技巧11-20


    1. 获取类的属性
    const QMetaObject *metaobject = object->metaObject();
    int count = metaobject->propertyCount();
    for (int i = 0; i < count; ++i) {
        QMetaProperty metaproperty = metaobject->property(i);
        const char *name = metaproperty.name();
        QVariant value = object->property(name);
        qDebug() << name << value;
    }
    
    1. Qt内置图标封装在QStyle中,大概七十多个图标,可以直接拿来用。
      QStyle::SP_TitleBarMenuButton

    2. 根据操作系统位数判断加载

    win32 {
        contains(DEFINES, WIN64) { DESTDIR = $${PWD}/../../bin64
        } else { DESTDIR = $${PWD}/../../bin32 }
    }
    
    1. Qt5增强了很多安全性验证,如果出现setGeometry: Unable to set geometry,请将该控件的可见移到加入布局之后。

    2. 可以将控件A添加到布局,然后控件B设置该布局,这种灵活性大大提高了控件的组合度,比如可以在文本框左侧右侧增加一个搜索按钮,按钮设置图标即可。

    QPushButton *btn = new QPushButton;
    btn->resize(30, ui->lineEdit->height());
    QHBoxLayout *layout = new QHBoxLayout(ui->lineEdit);
    layout->setMargin(0);
    layout->addStretch();
    layout->addWidget(btn);
    
    1. 对QLCDNumber控件设置样式,需要将QLCDNumber的segmentstyle设置为flat。

    2. 巧妙的使用findChildren可以查找该控件下的所有子控件。findChild为查找单个。

    //查找指定类名objectName的控件
    QList<QWidget *> widgets = parentWidget.findChildren<QWidget *>("widgetname");
    //查找所有QPushButton
    QList<QPushButton *> allPButtons = parentWidget.findChildren<QPushButton *>();
    //查找一级子控件,不然会一直遍历所有子控件
    QList<QPushButton *> childButtons = parentWidget.findChildren<QPushButton *>(QString(), Qt::FindDirectChildrenOnly);
    
    1. 巧妙的使用inherits判断是否属于某种类。
    QTimer *timer = new QTimer;         // QTimer inherits QObject
    timer->inherits("QTimer");          // returns true
    timer->inherits("QObject");         // returns true
    timer->inherits("QAbstractButton"); // returns false
    
    1. 使用弱属性机制,可以存储临时的值用于传递判断。可以通过widget->dynamicPropertyNames()列出所有弱属性名称,然后通过widget->property("name")取出对应的弱属性的值。

    2. 在开发时, 无论是出于维护的便捷性, 还是节省内存资源的考虑, 都应该有一个 qss 文件来存放所有的样式表, 而不应该将 setStyleSheet 写的到处都是。如果是初学阶段或者测试阶段可以直接UI上右键设置样式表,正式项目还是建议统一到一个qss样式表文件比较好,统一管理。

  • 相关阅读:
    cisco 4500X 交换机限速
    HPE 交换机基础配置
    MySQL数据库之主从复制
    MySQL复制线程状态转变
    MySQL数据库备份之mysqldump
    MySQL数据库之慢查询日志
    MySQL数据库之多线程备份工具mydumper
    MySQL数据库之索引
    MySQL之二进制日志
    MySQL数据库之sql_mode解释
  • 原文地址:https://www.cnblogs.com/feiyangqingyun/p/12056763.html
Copyright © 2020-2023  润新知