转载:https://www.cnblogs.com/csuftzzk/p/qss_combobox.html

转载:https://www.bbsmax.com/A/E35pLgRK5v/

转载:https://www.cnblogs.com/peterliang/p/3618820.html(QSplitter 拆分窗口)

转载:http://blog.sina.com.cn/s/blog_a6fb6cc90101i8it.html

Demo参考网上的例子,暂时记录下来,随后再整理

1.自定义combobox中的item控件

#include <QWidget>
#include <QLabel> class ComboboxItem : public QWidget
{
Q_OBJECT public:
ComboboxItem(QWidget *parent);
~ComboboxItem(); void setLabelContent(const QString & str); signals:
void chooseAccount(const QString&); private:
QLabel* m_img;
QLabel* m_label;
};
#include "ComboboxItem.h"
#include <QHBoxLayout> ComboboxItem::ComboboxItem(QWidget *parent)
: QWidget(parent)
{
m_img = new QLabel(this);
m_label = new QLabel(this);
m_img->setStyleSheet("QLabel{background: rgb(255, 0, 0)}");
m_img->setFixedSize(, ); QHBoxLayout* layout = new QHBoxLayout(this); layout->addWidget(m_img);
layout->addWidget(m_label);
layout->setContentsMargins(, , , ); setLayout(layout);
} ComboboxItem::~ComboboxItem()
{
} void ComboboxItem::setLabelContent(const QString & str)
{
m_label->setText(str);
}

2.自定义代理

#include <QStyledItemDelegate>

class NoFocusFrameDelegate :public QStyledItemDelegate
{
Q_OBJECT
public:
NoFocusFrameDelegate(QObject* parent = );
~NoFocusFrameDelegate(); virtual void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const;
};
#include "NoFocusFrameDelegate.h"

NoFocusFrameDelegate::NoFocusFrameDelegate(QObject* parent /*= 0*/)
{ } NoFocusFrameDelegate::~NoFocusFrameDelegate()
{ } void NoFocusFrameDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QStyleOptionViewItem view_option(option);
if (view_option.state & QStyle::State_HasFocus) {
view_option.state = view_option.state ^ QStyle::State_HasFocus;
} QStyledItemDelegate::paint(painter, view_option, index);
}

3.主窗口中使用

#include <QtWidgets/QMainWindow>
#include "ui_QMyCombobox.h" class QListWidget; class QMyCombobox : public QMainWindow
{
Q_OBJECT public:
QMyCombobox(QWidget *parent = Q_NULLPTR); public slots: void onChooseAccount(const QString& str); private:
Ui::QMyComboboxClass ui; QListWidget* m_listWidget;
};
#include "QMyCombobox.h"
#include <QListWidget>
#include "NoFocusFrameDelegate.h"
#include "ComboboxItem.h" QMyCombobox::QMyCombobox(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this); m_listWidget = new QListWidget(this); // 设置子项目代理,否则下拉框选项周围会出现虚线框
m_listWidget->setItemDelegate(new NoFocusFrameDelegate(this));
ui.comboBox->setEditable(true);
ui.comboBox->setModel(m_listWidget->model());
ui.comboBox->setView(m_listWidget); // 在下拉框中添加5个选项
for (int i = ; i < ; ++i)
{
ComboboxItem* item = new ComboboxItem(this);
item->setLabelContent(QString("Account") + QString::number(i, ));
connect(item, SIGNAL(chooseAccount(const QString&)), this, SLOT(onChooseAccount(const QString&)));
QListWidgetItem* widgetItem = new QListWidgetItem(m_listWidget);
m_listWidget->setItemWidget(widgetItem, item);
}
} void QMyCombobox::onChooseAccount(const QString& str)
{
ui.comboBox->setCurrentText(str);
}

最后效果:

Qt 组合框QComboBox的定制的更多相关文章

  1. Qt Style Sheet实践(二):组合框QComboBox的定制

    导读 组合框是一个重要且应用广泛的组件,一般由两个子组件组成:文本下拉单部分和按钮部分.在许多既需要用户选择.又需要用户手动输入的应用场景下,组合框能够很好的满足我们的需求.如我们经常使用的聊天软件Q ...

  2. Qt Style Sheet实践(二):组合框QComboBox的定制(24K纯开源)——非常漂亮

    组合框是一个重要且应用广泛的组件,一般由两个子组件组成:文本下拉单部分和按钮部分.在许多既需要用户选择.又需要用户手动输入的应用场景下,组合框能够很好的满足我们的需求.如我们经常使用的聊天软件QQ登录 ...

  3. 第15.41节、PyQt(Python+Qt)入门学习:输入部件QComboBox组合框功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 Designer中输入工具部件中的Combo Box组合框与 ...

  4. 组合框里添加复选框的方法(使用勾选的假象,用图片代替而已,并非QT原生支持)

    组合框可以看作是列表框和文本框的组合,因其占据的空间少,使用操作方便,常被界面设计人员用于界面开发设计中,在有限个输入的条件下,组合框常用来代替文本框,这样从用户使用角度来看,更趋人性化,所见即所得. ...

  5. 第三十四章、PyQt中的输入部件:QComboBox组合框功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 Designer中输入工具部件中的Combo Box组合框与 ...

  6. PyQt(Python+Qt)学习随笔:字体writingSystem、ProportionalFonts、MonospacedFonts的含义以及QFontComboBox字体组合框详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 在介绍QFontComboBox之前,我们先简单介绍一下字体 ...

  7. Qt自定义控件之可伸缩组合框(GroupBox)控件

    摘要 本文基于QGroupBox扩展了一种可以伸缩的组合框,正常状态下,组合框处于收缩状态,内部的控件是隐藏的:需要的时候,可以将组合框进行伸展,并将内部控件显示出来. 正文 实现的代码比较简单,主要 ...

  8. 组合框QGroupBox

    样式: 注意:内部必须使用布局控件 import sys from PyQt5.QtCore import Qt from PyQt5.QtGui import QPixmap from PyQt5. ...

  9. combox组合框设置高度

    组合框设置高度 转载 2013年10月24日 22:54:03 1033 MFC进行界面编程时,组合框CComboBox控件在可视化设计组件的时候是无法进行高度编辑的,但是我们在实际的项目中经常需要定 ...

随机推荐

  1. 下载文件时-修改文件名字 Redis在Windows中安装方法 SVN安装和使用(简单版) WinForm-SQL查询避免UI卡死 Asp.Net MVC Https设置

    下载文件时-修改文件名字   1后台代码 /// <summary> /// 文件下载2 /// </summary> /// <param name="Fil ...

  2. MySQL 5.7数据库参数优化

    连接相关参数 max_connections:允许客户端并发连接的最大数量,默认值是151,一般将该参数设置为500-2000max_connect_errors:如果客户端尝试连接的错误数量超过这个 ...

  3. shell中read用法

    1. Read的一些选项 Read可以带有-a, -d, -e, -n, -p, -r, -t, 和 -s八个选项. -a :将内容读入到数值中 1 2 3 echo -n "Input m ...

  4. ELK快速入门(四)filebeat替代logstash收集日志

    ELK快速入门四-filebeat替代logstash收集日志 filebeat简介 Filebeat是轻量级单用途的日志收集工具,用于在没有安装java的服务器上专门收集日志,可以将日志转发到log ...

  5. C语言几个术语: 数据对象,左值,右值

    1. 数据对象 赋值表达式语句的目的是把值存储到内存位置上. 用于存储值的数据存储区域统称为数据对象. 2. 左值 左值是C语言的术语, 用于标识特定数据对象的名称或表达式. 对象指的是实际的数据存储 ...

  6. 如何学习numpy

    可以通过官方中文文档 NumPy 中文文档

  7. 性能测试基础---联机负载&IP欺骗

    ·联机负载&IP欺骗 ·联机负载:又叫分布式负载,即通过多台负载机(压力机)运行脚本,向服务器发送请求,从而实现更多的负载压力. ·联机负载的具体操作: ·了解两个概念: ·控制机:所谓控制机 ...

  8. IDEA 注释模板

    类.接口.等文件注释: /** * @Description: * @author: tangsw * @date: ${DATE} ${TIME} * */ 方法上注释: /** * @Descri ...

  9. Redis Cluster数据分片机制

    复制粘贴自: https://www.e-learn.cn/content/redis/2344485, 点击链接访问原文 仅供个人学习参考之用, 如有侵权, 请联系删除! 高级开发不得不懂的Redi ...

  10. c+多态的本质:编译器维护了类型信息同时插入了解释执行机制

    Calling a virtual function is slower than calling a non-virtual function for a couple of reasons: Fi ...