Qt控件使用方法技巧合集

Qt控件使用方法技巧合集


文章目录

  • Qt控件使用方法技巧合集
        • 1、QTextEdit设置背景色和文本颜色
        • 2、QMessageBox的使用
        • 3、QComboBox点击事件更新列表
        • 4、QTabelView的使用
        • 5、Qt关于QDialog右上角显示?按钮不显示最大化、最小化按钮问题
        • 6、配置文件QSettings的使用


1、QTextEdit设置背景色和文本颜色

    // 设置QTextEdit背景和字体颜色
    QPalette pl = ui->textEdit->palette();     // 获取textEdit的调色板
    pl.setColor(QPalette::Base, Qt::black);    // 设置背景色为黑色
    pl.setColor(QPalette::Text, Qt::green);    // 设置文本颜色为绿色
    ui->textEdit->setPalette(pl);              // 设置回调色板

2、QMessageBox的使用

QMessageBox自定义了几个常用的消息框,常用的如下两个:

1、警告消息窗

python:

QMessageBox.warning(self.__MainWindow, '标题', '我是文本', QMessageBox.Close)

C++:

QMessageBox::warning(this, '标题', '我是文本', QMessageBox.Close)

在这里插入图片描述
2、信息提示消息窗

python:

QMessageBox.information(self.__MainWindow, '标题', '我是文本', QMessageBox.Close)

C++:

QMessageBox::information(this, '标题', '我是文本', QMessageBox.Close)

在这里插入图片描述
3、错误提示消息窗

QMessageBox::critical(this, "错误提示", "串口打开失败!\r\n请检查该端口是否存在或被占用!", "关闭");

Qt控件使用方法技巧合集_第1张图片

4、自定义一个消息窗

python:

        # 创建一个消息窗
        mb = QMessageBox(self.__MainWindow)

        # 设置标题
        mb.setWindowTitle('标题')

        # 设置显示内容
        mb.setText('测试QMessageBox')

        # 添加关闭按钮
        mb.addButton(QPushButton('关闭', mb), QMessageBox.RejectRole)

        # 显示消息窗
        mb.show()

在这里插入图片描述

3、QComboBox点击事件更新列表

实现方法:继承QComboBox,重载showPopup函数。

Python代码:

from PyQt5.Qt import *


class SerialComboBox(QComboBox):

    def __init__(self, parent=None):
        super().__init__(parent)

    def showPopup(self):
        self.clear()
        serials = QSerialPortInfo.availablePorts()
        for com in serials:
            self.addItem(com.portName() + ' ' + com.description())
        super().showPopup()


C++代码:

#include "qserialcombobox.h"
#include 

QSerialComboBox::QSerialComboBox(QWidget *parent) : QComboBox(parent)
{
     

}

void QSerialComboBox::showPopup()
{
     
    // 清除显示
    clear();

    // 扫描显示可用串口列表
    QList<QSerialPortInfo> serials = QSerialPortInfo::availablePorts();
    foreach (QSerialPortInfo info, serials) {
     
        addItem(info.portName() + " " + info.description());
    }

    // 调用父类显示列表
    QComboBox::showPopup();
}

Qt控件使用方法技巧合集_第2张图片

4、QTabelView的使用

1、设置模型显示

        # 创建3X3模型,如果不指定表格大小,那么他会根据标签的数量自行定义表格大小
        model = QStandardItemModel(3, 3, self.__MainWindow)
        # 设置行标签
        model.setHorizontalHeaderLabels(['编号', '姓名', '年龄'])
        # 设置列标签
        model.setVerticalHeaderLabels(['一班', '二班', '三班'])
        # 设置到TabelView上
        self.tableView.setModel(model)

Qt控件使用方法技巧合集_第3张图片

2、设置内容显示

        data = ['1', '2', '3']
        for i in range(len(data)):
            item = QStandardItem(data[i])
            # 设置内容对齐方式为:水平中心对齐+垂直中心对齐
            item.setTextAlignment(Qt.AlignHCenter | Qt.AlignVCenter)
            model.setItem(i, i, item)

Qt控件使用方法技巧合集_第4张图片

3、设置表格之间根据间距调整宽度方式
一共5种显示模式:

  • Custom
  • Fixed
  • Interactive
  • ResizeToContents
  • Stretch

常用的是根据内容自动调整大小和拉伸

设置方法:

# 设置水平标签重载大小模式为拉伸,也就是铺满整个框,每一列间距是一样的,这样比较好看
self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)

5、Qt关于QDialog右上角显示?按钮不显示最大化、最小化按钮问题

QDialog默认设置是右上角只显示一个问号按钮和一个关闭窗口按钮,最大化、最小化按钮需要自己设置,下面以Python代码为例,C++代码步骤也是一样的:

        # 创建窗体
        self.__MainWindow = QDialog()
        # 添加标记
        winflags = Qt.Dialog
        # 添加最小化按钮
        winflags |= Qt.WindowMinimizeButtonHint
        # 添加最大化按钮
        winflags |= Qt.WindowMaximizeButtonHint
        # 添加关闭按钮
        winflags |= Qt.WindowCloseButtonHint
        # 设置到窗体上
        self.__MainWindow.setWindowFlags(winflags)

6、配置文件QSettings的使用

在主窗口的构造函数中创建配置文件:

Qt控件使用方法技巧合集_第5张图片

加载配置文件并设置到UI界面上显示:
Qt控件使用方法技巧合集_第6张图片
退出主窗体的时候保存配置文件:
Qt控件使用方法技巧合集_第7张图片

你可能感兴趣的:(Qt,Qt,Qt控件使用)