QT textbroswer textedite Qlist的常用的操作函数
Textbrowser:
一.添加函数
1.insertPlainText():这个函数特别好用,括号里面的参数是QString,可以用QString(“%1%2”).arg(QString变量).arg(QString变量);,但是需要自己添加换行符‘\n’;
2.append():这个函数会自动的添加‘\n’
二.设置始终显示最新的内容
添加一下的槽函数:
void chat::textBrowser_textChanged()
{
ui.chatcontent->moveCursor(QTextCursor::End);//将光标自动设置为最低行,实现自动翻行
}
Textedite
一.读取输入的值:toPlainText()
二.清除:clear();
QListWidget
Qt提供QListWidget类列表框控件用来加载并显示多个列表项。QListWidgetItem类就是列表项类。
一般列表框控件中的列表项有两种加载方式:
- 一种是由用户手动添加的列表项,比如音乐播放器中加载音乐文件的文件列表,每一个音乐文件都是一个列表项。对于这种列表项,用户可以进行增加、删除、单击 以及双击等操作。
- 一种是由程序员事先编写好,写在程序中供用户选择的列表项,比如餐厅的电子菜单,每一道菜对应一个列表项。对于这种列表项,用户可以进行单机和双击操作(增加和删除操作也是可以进行的,但是一般的点菜系统会屏蔽掉这种功能)。
QListWidget类列表框控件支持两种列表项显示方式,即QListView::IconMode和QListView::ListMode。
总结一下列表框常用的增加、删除、单击、双击操作以及列表项显示方式设置,先给出全部代码,再解释。
程序效果(程序的ui界面根据此设计)
首先是main.cpp源文件
1 #include <QtGui>
2 #include <QApplication>
3 #include "mainwindow.h"
4
5 int main(int argc, char *argv[])
6 {
7 QApplication a(argc, argv);
8 //Qt文本的国际化显示
9 // QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));
10 // QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030"));
11 // QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB18030"));
12
13 MainWindow w;
14 w.show();
15 return a.exec();
16 }
其次是mainwindow.h头文件
1 #ifndef MAINWINDOW_H
2 #define MAINWINDOW_H
3
4 #include <QMainWindow>
5
6 #include <QtDebug>
7 #include <QMessageBox>
8
9 #include <QListWidgetItem> //列表框空间头文件
10 #include <QFileDialog> //文件对话框控件
11 #include <QStringList> //字符串容器
12 #include <QDir> //目录类头文件
13 #include <QString>
14
15 namespace Ui {
16 class MainWindow;
17 }
18
19 class MainWindow : public QMainWindow
20 {
21 Q_OBJECT
22
23 public:
24 explicit MainWindow(QWidget *parent = 0);
25 ~MainWindow();
26
27 private:
28 Ui::MainWindow *ui;
29 private slots:
30 void addbtn();
31 void deletebtn();
32 void delallbtn();
33 void addallbtn();
34 void singleclicked(QListWidgetItem* item);
35 void doubleclicked(QListWidgetItem* item);
36
37 };
38
39 #endif // MAINWINDOW_H
最后是mainwindow.cpp源文件
1 #include "mainwindow.h"
2 #include "ui_mainwindow.h"
3
4 MainWindow::MainWindow(QWidget *parent) :
5 QMainWindow(parent),
6 ui(new Ui::MainWindow)
7 {
8 ui->setupUi(this);
9 this->setWindowTitle(tr("listWidget学习")); //设置标题框文本
10 ui->listWidget->setViewMode(QListView::IconMode); //设置显示模式为图标模式,每添加一个对象就会自动分行
11 // ui->listWidget->setViewMode(QListView::ListMode); //设置显示模式为列表模式
12 QObject::connect(ui->AddButton,SIGNAL(clicked()),this,SLOT(addbtn()));
13 QObject::connect(ui->lineEdit,SIGNAL(returnPressed()),this,SLOT(addbtn()));
14 QObject::connect(ui->DeleteButton,SIGNAL(clicked()),this,SLOT(deletebtn()));
15 QObject::connect(ui->DelAllButton,SIGNAL(clicked()),this,SLOT(delallbtn()));
16 QObject::connect(ui->ShowDirButton,SIGNAL(clicked()),this,SLOT(addallbtn()));
17 // QObject::connect(ui->listWidget,SIGNAL(itemClicked(QListWidgetItem*)),this,SLOT(singleclicked(QListWidgetItem*)));
18 QObject::connect(ui->listWidget,SIGNAL(itemDoubleClicked(QListWidgetItem*)),this,SLOT(doubleclicked(QListWidgetItem*)));//每个list中的对象的点击事件
19 }
20
21 MainWindow::~MainWindow()
22 {
23 delete ui;
24 }
25
26 /***** 添加单个列表项 *****/
27 void MainWindow::addbtn()
28 {
29 QString str = ui->lineEdit->text(); //获取行编辑框文本
30 QListWidgetItem *item = new QListWidgetItem;
31 item->setText(str); //设置列表项的文本
32 ui->listWidget->addItem(item); //加载列表项到列表框
33 // delete item; //此处若解除注释,将无法添加到列表框
34 // item = NULL;
35 ui->lineEdit->clear(); //清空行编辑框
36 }
37
38 /***** 删除单个列表项 *****/
39 void MainWindow::deletebtn()
40 {
41 //获取列表项的指针
42 QListWidgetItem *item = ui->listWidget->takeItem(ui->listWidget->currentRow());
43 delete item; //释放指针所指向的列表项
44 }
45
46 /***** 删除多个列表项 *****/
47 void MainWindow::delallbtn()
48 {
49 int num = ui->listWidget->count(); //获取列表项的总数目
50 ui->listWidget->setFocus(); //将光标设置到列表框上,若注释该语句,则删除时,要手动将焦点设置到列表框,即点击列表项
51 for(int i=0;i<num;i++)
52 { //逐个获取列表项的指针,并删除
53 QListWidgetItem *item = ui->listWidget->takeItem(ui->listWidget->currentRow());
54 delete item;
55 }
56 }
57
58 /***** 添加多个列表项 *****/
59 void MainWindow::addallbtn()
60 {
61 QStringList FileNames = QFileDialog::getOpenFileNames(this,"打开",QDir::currentPath(),"所有文件(*.*);;文本文档(*.txt)");
62
63 //方法1 整体添加
64 // ui->listWidget->addItems(FileNames);
65
66 //方法2 逐个添加
67 int index=0,count=0;
68 // QListWidgetItem *item = new QListWidgetItem; //…………注释1
69 count = FileNames.count(); //获取打开文件的总数目
70
71 // for(index = 0;index<count;index++) //这样会报错,无法先取出栈底元素 //注释2
72 for(index=count-1;index>=0;index--) //QList<QString>的数据结构是栈,只能从栈顶取元素
73 {
74 QListWidgetItem *item = new QListWidgetItem;
75 item->setText(FileNames.takeAt(index)); //逐个设置列表项的文本
76 // qDebug()<<FileNames.takeAt(index); //…………注释3
77 ui->listWidget->addItem(item); //加载列表项到列表框
78 }
79 }
80 /*
81 注意事项:
82 1、QList<QString>的数据结构是栈,只能从栈顶取元素,所以如果将for循环注释掉,
83 将注释2解开,程序会出错。因为无法首先取出栈底元素,只能从栈顶开始。
84 2、对于for循环中的takeAt()函数来说,是将index 所指定的索引位置的数据取走,
85 并不是复制。所以,如果将注释3的打印语句解开的话,数据元素被取走,无法成功打印,程序出错。
86 3、如果将for循环中的QListWidgetItem *item = new QListWidgetItem;语句注释起来,
87 并将注释1和注释3解开,就可以打印出字符串列表FileNames中所有的字符串。只是运行程序会发成覆盖,
88 最终显示在列表框中的列表项是栈底元素(编译时,需要将takeAt()函数注释掉)。
89 */
90
91
92 /***** 列表项单击操作 *****/
93 void MainWindow::singleclicked(QListWidgetItem* item)
94 {
95 QMessageBox::information(this,"单击消息","单击"+item->text());
96 }
97
98 /***** 列表项双击操作 *****/
99 void MainWindow::doubleclicked(QListWidgetItem* item)
100 {
101 QMessageBox::information(this,"双击消息","双击"+item->text());
102 }
一、列表项的显示设置
ui->listWidget->setViewMode(QListView::IconMode); //设置显示模式为图标模式
ui->listWidget->setViewMode(QListView::ListMode); //设置显示模式为列表模式
二、列表框常用操作
列表框控件常用的操作:添加操作、删除操作、单击操作以及双击操作,下面分别介绍。
1、添加操作
添加操作又可以分为单列表项操作和多列表项操作。
①单列表项操作(以添加用户输入到行编辑框中的数据为例)
voidMainWindow::addbtn()
{
QStringstr=ui->lineEdit->text(); //获取行编辑框文本
QListWidgetItem*item=newQListWidgetItem;
item->setText(str);
//设置列表项的文本
ui->listWidget->addItem(item); //加载列表项到列表框
// deleteitem; //此处若解除注释,将无法添加到列表框
// item=NULL;
ui->lineEdit->clear(); //清空行编辑框
}
②多列表项操作(以添加多个文件名到列表框为例)
QStringList QFileDialog::getOpenFileNames ( QWidget * parent = 0, constQString & caption = QString(), const QString & dir = QString(), const QString& filter = QString(), QString * selectedFilter = 0, Options options =0 )[static]
该静态成员函数将按照给定的参数构造一个模态文件对话框,将用户选择的一个或多个现存的文件的路径名存储到字符串列表中,并返回该字符串列表。
QString QDir::currentPath () [static]
该静态成员函数用来返回应用程序的当前工作目录的绝对路径。
void QListWidget::addItems (const QStringList & labels )
该函数用来将字符串列表中的全部字符串作为列表项,添加到列表框中。
void QListWidget::addItem ( QListWidgetItem * item )
该函数用来将一个列表项添加到列表框当中。
注意:一个列表项只能被添加到列表框中一次,如果多次添加同一个列表项到列表框中,将导致不可预期的结果。
void QListWidget::addItem (const QString & label )
重载函数,用来将参数label所引用的字符串作为一个列表项,添加到列表框中。
int QList::count ()const int QList::size ()const
上述两个函数的功能等价,都是用来返回列表中存储的对象元素的个数。
T QList::takeAt ( int i )
该函数按照参数i指定的索引位置,将存储在列表中对应的对象元素移除并返回。返回类型为模板类型,由存储的数据的类型决定。索引值的大小范围为0<= i <= size()。
//方法1 整体添加
voidMainWindow::addallbtn()
{
QStringListFileNames=QFileDialog::getOpenFileNames(this,"打开",
QDir::currentPath(),
"所有文件(*.*);;文本文档(*.txt)");
ui->listWidget->addItems(FileNames);
}
//方法2 逐个添加
voidMainWindow::addallbtn()
{ QStringListFileNames=QFileDialog::getOpenFileNames(this,"打开",
QDir::currentPath(),
"所有文件(*.*);;文本文档(*.txt)");
intindex=0,count=0;
// QListWidgetItem*item=newQListWidgetItem; //…………注释1
count=FileNames.count(); //获取打开文件的总数目
// for(index=0;index<count;index++) //这样会报错,无法先取出栈底元素 //注释2
//QList<QString>的数据结构是栈,只能从栈顶取元素
for(index=count-1;index>=0;index--)
{
QListWidgetItem*item=newQListWidgetItem;
item->setText(FileNames.takeAt(index)); //逐个设置列表项的文本
// qDebug()<<FileNames.takeAt(index); //…………注释3
ui->listWidget->addItem(item); //加载列表项到列表框
}
}
注意事项:
1、QList<QString>的数据结构是栈,只能从栈顶取元素,所以如果将for循环注释掉,将注释2解开,程序会出错。因为无法首先取出栈底元素,只能从栈顶开始。
2、对于for循环中的takeAt()函数来说,是将index 所指定的索引位置的数据取走,并不是复制。所以,如果将注释3的打印语句解开的话,数据元素被取走,无法成功打印,程序出错。
3、如果将for循环中的QListWidgetItem *item = new QListWidgetItem;语句注释起来,并将注释1和注释3解开,就可以打印出字符串列表FileNames中所有的字符串。只是运行程序会发成覆盖,最终显示在列表框中的列表项是栈底元素(编译时,需要将takeAt()函数注释掉)。
2、删除操作
删除操作又可以分为单文件操作和多文件操作。
①删除单个列表项(删除列表框中的单个列表项)
QListWidgetItem *QListWidget::takeItem ( int row )
该函数用来将索引号为row的列表项从列表框移除,并返回该列表项的指针。
int currentRow() const
该常成员函数用来获取当前列表项的索引号,并返回。
voidMainWindow::deletebtn()
{
//获取列表项的指针
QListWidgetItem*item=ui->listWidget->takeItem(ui->listWidget->currentRow());
deleteitem; //释放指针所指向的列表项
}
②删除多个文件(删除列表框中的所有列表项)
voidMainWindow::delallbtn()
{
intnum=ui->listWidget->count(); //获取列表项的总数目
ui->listWidget->setFocus(); //将光标设置到列表框上
for(inti=0;i<num;i++)
{ //逐个获取列表项的指针,并删除
QListWidgetItem*item=ui->listWidget->takeItem(ui->listWidget->currentRow());
deleteitem;
}
}
3、点击操作
①单击操作(输出单击项的文本)
voidMainWindow::singleclicked(QListWidgetItem*item)
{
QMessageBox::information(this,"单击消息","单击"+item->text());
}
②双击操作(输出双击项的文本)
voidMainWindow::doubleclicked(QListWidgetItem*item)
{
QMessageBox::information(this,"双击消息","双击"+item->text());
}
QT textbroswer textedite Qlist的常用的操作函数的更多相关文章
- MATLAB 常用形态学操作函数
常用形态学操作函数(转自:http://blog.sina.com.cn/s/blog_4c52e9e20100e5if.html) 1.dilate函数 该函数能够实现二值图像的膨胀操作,有以下形式 ...
- [转载]c++常用字符串操作函数
原文地址:c++常用字符串操作函数作者:Valsun 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source ...
- 【阅读笔记】《C程序员 从校园到职场》第六章 常用文件操作函数 (Part 1)
参考链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/24926023 让你提前认识软件开发(18):C语言中常用的文件操作函数总结 ...
- 文件操作(FILE)与常用文件操作函数
文件 1.文件基本概念 C程序把文件分为ASCII文件和二进制文件,ASCII文件又称文本文件,二进制文件和文本文件(也称ASCII码文件)二进制文件中,数值型数据是以二进制形式存储的, 而在文本文件 ...
- python进阶—OpenCV之常用图像操作函数说明(转)
文章目录cv2.thresholdcv2.bitwise_andcv2.bitwise_orcv2.bitwise_notcv2.inRangecv2.resizecv2.adaptiveThresh ...
- C语言的常用字符串操作函数(一)
一直做的是单片机相关的程序设计,所以程序设计上更偏向底层,对于字符串的操作也仅限于液晶屏幕上的显示等工作,想提高下字符串操作的水平,而不是笨拙的数组替换等方式,翻看帖子发现C语言的字符串操作函数竟然这 ...
- mysql常用字符串操作函数大全,以及实例
今天在论坛中看到一个关于mysql的问题,问题如下 good_id cat_id12654 665,56912655 601,4722 goods_id是商品i ...
- Python基础学习笔记(六)常用列表操作函数和方法
参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-lists.html 3. http://www.liaoxuef ...
- js 数组常用的操作函数整理
平时多做企业应用开发,抱着实用为主,对前端技术理解得比较肤浅,下面就是肤浅地对 js 数组的属性和方法及对它操作的 jquery 方法做些记录: js 数组是 js 内建的一个非常强大数据类型,由于 ...
随机推荐
- pyqt5 工具栏文字图片同时显示
import sys from PyQt5.QtWidgets import QMainWindow, QTextEdit, QAction, QApplication from PyQt5.QtGu ...
- gimp怎么移动选取中的图像并创建图层
gimp怎么移动选取中的图像并创建图层 https://jingyan.baidu.com/article/414eccf6bf4d6e6b431f0a3b.html 听语音 原创 | 浏览:1148 ...
- Python内置函数reversed()用法分析
Python内置函数reversed()用法分析 这篇文章主要介绍了Python内置函数reversed()用法,结合实例形式分析了reversed()函数的功能及针对序列元素相关操作技巧与使用注意事 ...
- IntelliJ IDEA 2018 for Mac专业使用技巧
IntelliJ IDEA 2018 for Mac是一个综合性的Java编程环境,被许多开发人员和行业专家誉为市场上最好的IDE,它提供了一系列最实用的的工具组合:智能编码辅助和自动控制,支持J2E ...
- FTP简单搭建(一)
一.FTP服务介绍 vsftp(very security ftp file transfer protocol 非常文件传输协议) FTP分为主动模式和被动模式. 主动模式:(不安全,传数据的端口是 ...
- jmeter—获取当前时间(年、月、日),往前/往后n天
import java.util.Calendar; Calendar cal = Calendar.getInstance(); int day = cal.get(Calendar.DATE); ...
- 西安邀请赛-L(打表找规律)
题目链接:https://nanti.jisuanke.com/t/39279 题意:给定n个不同的数表示的序列,定义两种操作:1. 交换前一半和后一半(如果有奇数个,则中间的不管).2. 交换每个偶 ...
- 【Linux-驱动】printk的打印级别
级别: 日志级别用宏表示,日志级别宏展开为一个字符串,在编译是由预处理器将它和消息本文拼接成一个字符串,因此printk函数中日志级别宏和格式字符串间不能有逗号.printk的日志级别定义在 /inc ...
- 从零开始,SpreadJS新人学习笔记【第4周】
数据绑定.脏数据和单引号前缀 本周,让我们一起来学习SpreadJS 的数据绑定.脏数据和单引号前缀,希望我的学习笔记能够帮助你们,从零开始学习 SpreadJS,并逐步精通. 在此前的学习笔记中,相 ...
- SpringBoot 启动失败 Failed to determine a suitable driver class 问题解决方案
Description: Failed to auto-configure a DataSource: 'spring.datasource.url' is not specified and no ...