QComboBox 和 QPlainTextEdit

Posted allen mirac

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QComboBox 和 QPlainTextEdit相关的知识,希望对你有一定的参考价值。

目录

QComboBox

添加项

常用函数

QPlainTextEdit

使用方法

示例

欢迎大家star


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(通过委托)?

将Qcombobox的Qsettings写入文件而不关闭Widget

PyQt5 组件之QComboBox

根据来自 QComboBox 的用户输入添加和删除动态生成的 QLineEdit 小部件

Python Qt GUI设计:QComboBox下拉列表框类(基础篇—14)

Python Qt GUI设计:QComboBox下拉列表框类(基础篇—14)