QComboBox 和 QPlainTextEdit
Posted allen mirac
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QComboBox 和 QPlainTextEdit相关的知识,希望对你有一定的参考价值。
目录
QComboBox
QComboBox 主要的功能是提供一个下拉列表供选择输入,也可以直接当作一个 QLineEdit 用作输入(ui->comboBox->setEditable(true);
)。
添加项
void ExQComboBox::on_btnInitNameAge_clicked()
QIcon ico;
ico.addFile(":/girl.ico");
QMap<QString, QString> map;
map.insert("张投", "16岁");
map.insert("张我", "17岁");
map.insert("张以", "18岁");
map.insert("张木", "19岁");
map.insert("张李", "20岁");
map.insert("张,", "21岁");
map.insert("张报", "22岁");
ui->comboBoxRight->clear();
foreach(const QString &str, map.keys())
ui->comboBoxRight->addItem(ico, str, map.value(str));
这里用了foreach遍历map。
添加具有用户数据的项 QComboBox::addltem() 函数的两种参数的原型定义如下:
void addItem (const QString &text, const QVariant &userData = QVariant())
void addItem (const QIcon &icon, const QString &text, const QVariant &userData = QVariant())
常用函数
QComboBox 存储的项是一个列表,但是 QComboBox 不提供整个列表用于访问,可以通过索引访问某个项。访问项的一些函数主要有以下几种:
-
int currentlndex():返回当前项的序号,第一个项的序号为0。
-
QString currentText():返回当前项的文字。
-
QVariant currentData(int role = Qt::UserRole):返回当前项的关联数据,数据的缺省角色为 role = Qt::UserRole,角色的意义在后续章节会详细介绍。
-
QString itemText(int index):返回指定索引号的项的文字。
-
QVariant itemData(int index, int role = Qt%:UserRole):返回指定索引号的项的关联数据。
-
int count():返回项的个数。
在一个 QComboBox 组件上选择项发生变化时,会发射如下两个信号:
void currentlndexChanged(int index) void currentlndexChanged(const QString &text)
QPlainTextEdit
QPlainTextEdit 是一个多行文本编辑器,用于显示和编辑多行简单文本。
QPlainTextEdit 提供cut( )、copy( )、paste( )、undo( )、redo( )、clear( )、selectAll( )等标准编辑功 能的槽函数,QPlainTextEdit还提供一个标准的右键快捷菜单。
QPlainTextEdit的文字内容以QTextDocument类型存储,函数document()返回这个文档对象的指针。
QTextDocument是内存中的文本对象,以文本块的方式存储,一个文本块就是一个段落,每个段落以回车符结束。QTextDocument提供一些函数实现对文本内容的存取。
使用方法
常用函数 | 含义() |
---|---|
appendPlainText() | 向QPlain TextEdit添加一行话 |
int blockCount() | 获得文本块个数 |
QTextBlock findBlockByNumber(int blockNumber) | 读取某一个文本块,序号从0开始,至blockCount()-1结束。 |
示例
void ExQComboBox::onSelectDisplay(QString str)
QString strData = ui->comboBoxRight->currentData().toString();
ui->plainTextEdit->appendPlainText(str + " " + strData);
欢迎大家star
这里是项目的源码,是一个很好的练习的例子,可以自己敲着玩一玩,练习练习手感
QTStudy/QTReviewQCombobox at main · allenmirac/QTStudy · GitHub
Python Qt GUI设计:QComboBox下拉列表框类(基础篇—14)
QComboBox是一个集按钮和下拉选项于一体的控件,也被称为下拉列表框。
QComboBox类中的常用方法如下表所示:
QComboBox类中的常用信号如下表所示:
来看看QComboBox按钮类的示例,效果如下所示:
在这个例子中显示了一个下拉列表框和一个标签,其中下拉列表框中有5个选项,既可以使用QComboBox的addltem()方法添加单个选项,也可以使用addltems()方法添加多个选项,标签显示的是从下拉列表框中选择的选项。
当下拉列表框中的选项发生改变时将发射currentIndexChanged信号,连接到自定义的槽函数selectionchange()。
在方法中,当选中下拉列表框中的一个选项时,将把该选项的文本设置为标签的文本并调整标签的大小。
实现代码如下所示:
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class ComboxDemo(QWidget):
def __init__(self, parent=None):
super(ComboxDemo, self).__init__(parent)
self.setWindowTitle("combox 例子")
self.resize(300, 90)
layout = QVBoxLayout()
self.lbl = QLabel("" )
self.cb = QComboBox()
self.cb.addItem("C")
self.cb.addItem("C++")
self.cb.addItems(["Java", "C#", "Python"])
self.cb.currentIndexChanged.connect(self.selectionchange)
layout.addWidget(self.cb)
layout.addWidget(self.lbl )
self.setLayout(layout)
def selectionchange(self,i):
self.lbl.setText( self.cb.currentText() )
self.lbl.adjustSize()
print( "Items in the list are :" )
for count in range(self.cb.count()):
print( 'item'+str(count) + '='+ self.cb.itemText(count) )
print( "Current index",i,"selection changed ",self.cb.currentText() )
if __name__ == '__main__':
app = QApplication(sys.argv)
comboxDemo = ComboxDemo()
comboxDemo.show()
sys.exit(app.exec_())
以上是关于QComboBox 和 QPlainTextEdit的主要内容,如果未能解决你的问题,请参考以下文章
将Qcombobox的Qsettings写入文件而不关闭Widget
根据来自 QComboBox 的用户输入添加和删除动态生成的 QLineEdit 小部件