标签: qcombobox

分组QComboBox

你能告诉我一个如何在Qt中创建这个分组组合框的简单例子吗?

在此输入图像描述

c++ qt qcombobox

7
推荐指数
2
解决办法
1960
查看次数

键/值pyqt QComboBox

我想使用QComboBox与元组中的"键"和"值"类似于django模型中使用的元组.例如,我有一个人的性别以下结构.

SEX_CHOICES = (('M', 'Male'), ('F', 'Female'))
Run Code Online (Sandbox Code Playgroud)

元组的第一项包含存储在数据库中的性别代码,第二项是我想在QComboBox中作为项目显示的文本.

有没有办法我可以将QComboBox值设置为M并显示Male.当用户选择元素时,我也可以将所选值作为M.

谢谢

pyqt qcombobox

6
推荐指数
1
解决办法
4261
查看次数

PyQt QComboBox设置下拉列表中可见项目的数量

我正在使用PyQt中的一个应用程序来获取对象字典,并允许您实时绘制从机器人流出的变量.我正在努力实现这一点的一个方面是下拉菜单.不幸的是,我们有几百个变量,所以当我点击时,我的PyQt Combobox会从屏幕顶部弹出到底部.我想将一次显示的项目数限制为20,并能够滚动查看其余项目.我已经尝试使用记录的setMaxVisibleItems方法,但它根本不会影响下拉.有什么建议?

代码在这里:

#!/usr/bin/env python

from PyQt4.QtCore import Qt
from PyQt4.QtGui import QComboBox, QApplication

from cli.parc2_od import cli_od
import sys

app = QApplication(sys.argv)

items = cli_od.OD.keys() #Items to populate dropdown.
combo = QComboBox()

#The solution:
combo.setStyleSheet("QComboBox { combobox-popup: 0; }")
combo.setMaxVisibleItems(10)




combo.addItems(items)

combo.resize(300, 30)
combo.show()


sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

pyqt pyqt4 qcombobox

6
推荐指数
1
解决办法
3595
查看次数

Qt - 设置不可编辑的 QComboBox 的显示文本

我想将 QComboBox 的文本设置为一些自定义文本(不在 QComboBox 的列表中),而不将此文本添加为​​ QComboBox 的项目。此行为可在带有QComboBox::setEditText(const QString & text). 但是,在不可编辑的 QComboBox 上,此函数不执行任何操作。

是否可以以编程方式将不可编辑的 QComboBox 的显示/编辑文本设置为不在其列表中的内容?还是我必须找到另一种方式(例如使用带有弹出菜单的 QPushButton)

编辑:考虑一个可编辑的 QComboBox 与InsertPolicy QComboBox::NoInsert. 如果用户输入内容并按回车键,输入的值将被使用但不会添加到列表中。我想要的是这种行为以编程方式更改“当前”文本,但不允许用户自己输入一些文本。用户可以从 QComboBox 中选择一些内容,但一段时间后,我可能想要覆盖“当前”文本。

c++ qt qcombobox

6
推荐指数
2
解决办法
8683
查看次数

圆形QComboBox后面没有方框

我在Qt中设计了一个QComboBox.这是图中所示的四舍五入.问题是在圆形边框后面显示一个奇怪的方框.

有人能告诉我这个盒子是什么以及如何使它隐形吗?

顺便说一句,我也想把阴影带走.

在此输入图像描述

这是我目前的代码:

QComboBox {
    border: 1px solid gray;
    border-radius: 10px;
    min-width: 6em;
}

QComboBox:on {
    border-bottom-left-radius: 0px;
    border-bottom-right-radius: 0px;
}

QComboBox QAbstractItemView {
    border-bottom-right-radius: 10px;
    border-bottom-left-radius: 10px;
    background: white;
    border: 1px solid gray;
    box-shadow: transparent;
}

QComboBox::drop-down {
    border-color: transparent;
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?谢谢!

css qt stylesheet qcombobox

6
推荐指数
1
解决办法
982
查看次数

下拉列表中所选项目的QComboBox样式

我想在组合框的下拉菜单中选择所选项目的突出显示.

与其他问题的区别在于我不想设置"选定"项目的样式(用鼠标悬停).但是我对已经选择的项目的样式感兴趣.

默认是某种在文本上绘制的自动收报机.我希望选择的项目有粗体文字,没有自动收报机图像.

或者在最坏的情况下,只需向右移动文本即可正确显示自动收报机.

我有的是这个:

在此输入图像描述

请注意第17个项目,其中包含数字17的自动收报机.

这是我的样式表:

QComboBox
{
    subcontrol-origin: padding;
    subcontrol-position: top right;
    selection-background-color: #111;
    selection-color: yellow;
    color: white;
    background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #565656, stop: 0.1 #525252, stop: 0.5 #4e4e4e, stop: 0.9 #4a4a4a, stop: 1 #464646);
    border-style: solid;
    border: 1px solid #1e1e1e;
    border-radius: 5;
    padding: 1px 0px 1px 20px;
}


QComboBox:hover, QPushButton:hover
{
    border: 1px solid yellow;
    color: white;
}

QComboBox:editable {
    background: red;
    color: pink; …
Run Code Online (Sandbox Code Playgroud)

qt qcombobox qtstylesheets

6
推荐指数
1
解决办法
2万
查看次数

PyQt启用/禁用QComboBox中的元素

我有一个QComboBox列出所有Windows的驱动器号,让用户在其中进行选择.在执行期间,我们需要启用或禁用某些字母(不删除它们).

这是基本代码:

all_letters = ["{}:".format(chr(i)) for i in range(90, 64, -1)]  # Z: -> A:
all_letters.insert(0, "")
cb_letter = QtGui.QComboBox()
for l in all_letters:
    cb_letter.addItem(l)
cb_letter.setCurrentIndex(0)
Run Code Online (Sandbox Code Playgroud)

我可以找到一种解决方案(听起来真的很复杂),只是在这里禁用一个条目,但无法启用它.

什么是启用和禁用QComboBox的任何条目的最佳方法?

python pyqt pyqt4 qcombobox python-3.x

6
推荐指数
1
解决办法
4588
查看次数

恢复QMainWindow的浮动工具栏时出现问题

在浮动工具栏中恢复具有QCombobox的QMainWindow状态时,我看到一个问题。恢复浮动工具栏后,我的QCombobox无法获得焦点,直到我单击工具栏手柄并将其移动。以下是显示问题的gif,使用QT 5.13。 在此处输入图片说明

文件float_toolbar.pro

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = floating_toolbar
TEMPLATE = app


DEFINES += QT_DEPRECATED_WARNINGS

 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

CONFIG += c++11

SOURCES += \
        main.cpp \
        mainwindow.cpp

HEADERS += \
        mainwindow.h

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
Run Code Online (Sandbox Code Playgroud)

档案:main.cpp

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w; …
Run Code Online (Sandbox Code Playgroud)

linux qt qcombobox qtoolbar qt5

6
推荐指数
1
解决办法
180
查看次数

设置QStyleOptionComboBox.currentText对绘制的窗口小部件没有任何影响

我想在委托中绘制一个QComboBox,除了我无法弄清楚如何绘制在组合框中可见的初始文本之外,它工作得很好.

文档说QStyleOptionComboBox.currentText保持:"组合框当前项的文本." 但设置变量没有任何影响.

这是我的代码:

void MyDelegate::paint(QPainter *painter,
    const QStyleOptionViewItem& option,
    const QModelIndex& index) const
{
    QStyleOptionComboBox comboBoxOption;
    comboBoxOption.rect = option.rect; 
    comboBoxOption.state = option.state;
    comboBoxOption.state |= QStyle::State_Enabled;
    comboBoxOption.editable = false;
    comboBoxOption.currentText = "CCC"; // This doesn't show up.

    QApplication::style()->drawComplexControl(QStyle::CC_ComboBox, &comboBoxOption, painter);
}
Run Code Online (Sandbox Code Playgroud)

看着qwindowsxpstyle.cpp我没有看到"真实"组合框的文本在哪里被绘制,因为currentTextdrawComplexControl方法中没有使用.它似乎用于Windows XP风格的唯一地方是qcommonstyle.cpp(Line 2107,Qt 4.7.2),但我无法弄清楚这两个类如何一起玩.

qt qcombobox

5
推荐指数
1
解决办法
1818
查看次数

从qComboBox弹出菜单中捕获鼠标按钮按下的信号

我做了多选QComboBox.项目是可检查的(每个项目都有复选框和文本值).只有在用户单击它时才会检查CheckBox.我想要的是在用户点击文本值时捕获信号,这样我就可以设置选中它旁边的复选框.怎么做?

在此输入图像描述

这就是我将模型设置为组合框的方式:

areas = ["Area one", "Area two", "Area three", "Area four"]
model = QtGui.QStandardItemModel(5, 1)# 5 rows, 1 col

firstItem = QtGui.QStandardItem("---- Select area(s) ----")
firstItem.setBackground(QtGui.QBrush(QtGui.QColor(200, 200, 200)))
firstItem.setSelectable(False)
model.setItem(0, 0, firstItem)

for i,area in enumerate(areas):
    item = QtGui.QStandardItem(area)
    item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled)
    item.setData(QtCore.Qt.Unchecked, QtCore.Qt.CheckStateRole)
    model.setItem(i+1, 0, item)

self.ui.comboBox.setModel(model)        
self.ui.comboBox.installEventFilter(self)
Run Code Online (Sandbox Code Playgroud)

我已经为阻止轮子事件添加了事件过滤器,因此firstItem文本总是显示为"已选择"

def eventFilter(self,target,event):
    if target == self.ui.comboBox:
        if(event.type()== QtCore.QEvent.Wheel):
            #wheel event is blocked here
            return True
    return False
Run Code Online (Sandbox Code Playgroud)

python popupmenu signals-slots pyqt4 qcombobox

5
推荐指数
1
解决办法
5241
查看次数