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::IconModeQListView::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的常用的操作函数的更多相关文章

  1. MATLAB 常用形态学操作函数

    常用形态学操作函数(转自:http://blog.sina.com.cn/s/blog_4c52e9e20100e5if.html) 1.dilate函数 该函数能够实现二值图像的膨胀操作,有以下形式 ...

  2. [转载]c++常用字符串操作函数

    原文地址:c++常用字符串操作函数作者:Valsun 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source ...

  3. 【阅读笔记】《C程序员 从校园到职场》第六章 常用文件操作函数 (Part 1)

    参考链接:https://blog.csdn.net/zhouzhaoxiong1227/article/details/24926023 让你提前认识软件开发(18):C语言中常用的文件操作函数总结 ...

  4. 文件操作(FILE)与常用文件操作函数

    文件 1.文件基本概念 C程序把文件分为ASCII文件和二进制文件,ASCII文件又称文本文件,二进制文件和文本文件(也称ASCII码文件)二进制文件中,数值型数据是以二进制形式存储的, 而在文本文件 ...

  5. python进阶—OpenCV之常用图像操作函数说明(转)

    文章目录cv2.thresholdcv2.bitwise_andcv2.bitwise_orcv2.bitwise_notcv2.inRangecv2.resizecv2.adaptiveThresh ...

  6. C语言的常用字符串操作函数(一)

    一直做的是单片机相关的程序设计,所以程序设计上更偏向底层,对于字符串的操作也仅限于液晶屏幕上的显示等工作,想提高下字符串操作的水平,而不是笨拙的数组替换等方式,翻看帖子发现C语言的字符串操作函数竟然这 ...

  7. mysql常用字符串操作函数大全,以及实例

    今天在论坛中看到一个关于mysql的问题,问题如下 good_id     cat_id12654         665,56912655         601,4722 goods_id是商品i ...

  8. Python基础学习笔记(六)常用列表操作函数和方法

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-lists.html 3. http://www.liaoxuef ...

  9. js 数组常用的操作函数整理

    平时多做企业应用开发,抱着实用为主,对前端技术理解得比较肤浅,下面就是肤浅地对 js 数组的属性和方法及对它操作的 jquery 方法做些记录: js 数组是 js 内建的一个非常强大数据类型,由于 ...

随机推荐

  1. asp.net core mvc View Component 应用

    ViewComponent 1.View 组件介绍 在ASP.NET CORE MVC中,View组件有点类似于partial views,但是他们更强大,View组件不能使用model bindin ...

  2. python导入csv文件出现SyntaxError问题分析

    python导入csv文件出现SyntaxError问题分析 先简单描述下碰到的题目,要求是写出2个print的结果 可以看到,a指向了一个列表list对象,在Python中,这样的赋值语句,其实内部 ...

  3. EUREKA 删除 or 强制下线/上线 实例

    开发环境,EUREKA 注册中心 某服务被注册了多个实例,feign 调用时 服务请求到其他实例上,请求收不到,使用一下命令删除 或者强制下线实例: 1 .DELETE  删除注册实例,但是如果被删除 ...

  4. IPV6测试方法

    终端 dig +nocmd + nostats 你的域名 AAAA: 查看Got answer 如果 status的状态是NO ERROR 那就是支持IPV6 就没啥问题. 如果status 的状态是 ...

  5. 【HANA系列】SAP HANA SQL获取字符串长度

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL获取字符 ...

  6. 【AMAD】django-rules -- 强大的Django鉴权库,不需要数据库

    动机 简介 个人评分 动机 Django默认的权限原子级别是model级.但是一些时候我们像针对model每条数据库记录都进行权限空,也就是对象级权限控制. 简介 django-rules是一个Dja ...

  7. SVN(linux版)安装与使用

    SVN(linux版)安装与使用 一 简述:  SVN有2种运行方式,一种是 linux自带的轻量级服务器svnserve,一种是基于Apache的. 基于svnserve的,默认端口为3690,通过 ...

  8. 【Linux开发】linux中关于dma_alloc_coherent的用法

    大家都知道,DMA的操作是需要物理地址的,但是在linux内核中使用的都是虚拟地址,如果我们想要用DMA对一段内存进行操作,我们如何得到这一段内存的物理地址和虚拟地址的映射呢?dma_alloc_co ...

  9. docker数据卷学习-利用数据卷实现mysql的快速恢复和迁移

    docker数据卷学习 一 新建带有数据卷的容器 1.从docker hub下载centos7镜像 # docker pull centos 2. 创建container # docker run - ...

  10. PTA(Basic Level)1029.旧键盘

    旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在 2 行中分别给出应该输入的文字.以及 ...