实现下面这个简单的文件浏览功能,常用的QTableWidget设置都用到了。 

基本设置

    ui->tableWidget->setColumnCount(5);                               //设置表格列数
ui->tableWidget->horizontalHeader()->setStretchLastSection(true); //设置表格是否充满,即行位不留空
ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);//设置鼠标选择行为:一个单元格/一行/一列
ui->tableWidget->horizontalHeader()->setFixedHeight(35); //设置表头高度 /*设置表头单元格内容*/
QStringList header;
header<<tr("File Name")<<tr("Size")<<tr("Double Click to Decode") << "Double Click to Close"<< tr("Decode Process");
ui->tableWidget->setHorizontalHeaderLabels(header);
/*设置表头字体加粗*/
QFont font = ui->tableWidget->horizontalHeader()->font();
font.setBold(true);
ui->tableWidget->horizontalHeader()->setFont(font);
ui->tableWidget->setFrameShape(QFrame::NoFrame); //设置无边框
ui->tableWidget->verticalHeader()->hide(); //设置垂直的头部隐藏,不隐藏默认会显示列表数字
ui->tableWidget->horizontalHeader()->resizeSection(0,150); //设置第0列的宽度为150px
ui->tableWidget->setItemDelegate(new NoFocusDelegate()); //设置鼠标行时,不显示单元格虚框,NoFocusDelegate类实现如附录
ui->tableWidget->setMouseTracking(true); //设置鼠标捕捉,不设置,如鼠标进入等动作检测不到
ui->tableWidget->setStyleSheet("selection-");//设置行选中时背景颜色
ui->tableWidget->horizontalHeader()->setStyleSheet("QHeaderView::section{background:greenyellow;}");//表头背景颜色
/*信号槽,单元格双击*/
connect(ui->tableWidget, SIGNAL(cellDoubleClicked(int,int)),
this, SLOT(sdlog2Decode(int,int)));
/*信号槽,鼠标进入单元格*/
connect(ui->tableWidget,SIGNAL(itemEntered(QTableWidgetItem*)),
this,SLOT(itemEnteredHover(QTableWidgetItem *))); /*添加构件到单元格,如按钮,进度条等*/
QProgressBar *pgbar = new QProgressBar(ui->tableWidget);
pgbar->setTextVisible(false);
ui->tableWidget->setCellWidget(row,column,pgbar); //替换当前widget /*设置单元格背景颜色*/
QTableWidgetItem *itemtemp = ui->tableWidget->item(row, col);
itemtemp->setBackgroundColor(QColor(255,255,255,255)); ui->tableWidget->removeCellWidget(row,col); //移除单元格中的构件
ui->tableWidget->removeRow(row); //移除表格某一行
int col = ui->tableWidget->columnCount(); //获取表格列数
int row = ui->tableWidget->rowCount(); //获取行数 /*插入第row行,以两列为例*/
ui->tableWidget->insertRow(row);
QTableWidgetItem *Item1 = new QTableWidgetItem("hello1");
Item1->setTextAlignment(Qt::AlignCenter | Qt::AlignVCenter);
Item1->setFlags(Item1->flags() ^ Qt::ItemIsEditable);
QTableWidgetItem *Item2 = new QTableWidgetItem("hello2"); //设置单元格内容
Item2->setTextAlignment(Qt::AlignCenter | Qt::AlignVCenter); //设置单元格内容对其方式
Item2->setFlags(Item2->flags() ^ Qt::ItemIsEditable); //设置单元格是否可编辑
ui->tableWidget->setItem(row, 0, Item1);
ui->tableWidget->setItem(row, 1, Item2); /*设置各种文件icon*/
QFileInfo info;
QFile file(currentDir.absoluteFilePath(filesname));
info = QFileInfo(filesname);
qint64 size = info.size();
QFileIconProvider icon_provider;
QIcon icon = icon_provider.icon(info);
QTableWidgetItem *fileNameItem = new QTableWidgetItem(info.filePath());
fileNameItem->setIcon(icon);
fileNameItem->setTextAlignment(Qt::AlignCenter | Qt::AlignVCenter);
fileNameItem->setFlags(fileNameItem->flags() ^ Qt::ItemIsEditable);

附录程序

NoFocusDelegate.h
#ifndef NoFocusDelegate_H
#define NoFocusDelegate_H
#include <QPainter>
#include <QStyledItemDelegate>
class NoFocusDelegate :public QStyledItemDelegate
{
public:
NoFocusDelegate();
~NoFocusDelegate();
protected:
void paint(QPainter* painter, const QStyleOptionViewItem & option, const QModelIndex &index) const;
};
#endif // SETHIGHLIGHTSECTIONS_H
NoFocusDelegate.cpp
#include "NoFocusDelegate.h"
NoFocusDelegate::NoFocusDelegate()
{
}
NoFocusDelegate::~NoFocusDelegate()
{
}
void NoFocusDelegate::paint(QPainter* painter, const QStyleOptionViewItem & option, const QModelIndex &index) const
{
QStyleOptionViewItem itemOption(option);
if (itemOption.state & QStyle::State_HasFocus)
{
itemOption.state = itemOption.state ^ QStyle::State_HasFocus;
}
QStyledItemDelegate::paint(painter, itemOption, index);
}
 

http://blog.csdn.net/freeape/article/details/47404265

QTableWidget简单应用之文件浏览器的更多相关文章

  1. php写的非常简单的文件浏览器

    php写的非常简单的一个文件浏览器,仅供参考. <?php /** * php文件浏览程序函数 showDir() * * $dirName 输入目录路径,默认php文件一级目录,不需输入: * ...

  2. 【Java】 实现一个简单文件浏览器(1)

    学习Java的Swing的时候写的一个超简单文件浏览器 效果如图: 项目结构: 这里面主要用了两个控件,JTree和JTable 下面先说下左侧的文件树如何实现: 首先是FileTree类,继承于JT ...

  3. Android简单文件浏览器源代码 (转)

    Android简单文件浏览器源代码 (转) activity_main .xml <LinearLayout xmlns:android="http://schemas.android ...

  4. Android入门之文件系统操作(一)简单的文件浏览器 (转)

    Android入门之文件系统操作(一)简单的文件浏览器 (转)        import java.io.File; import java.util.*; import android.app.A ...

  5. Android入门之文件系统操作(一)简单的文件浏览器

    版权声明:本文为博主原创文章,未经博主允许不得转载.       import java.io.File; import java.util.*; import android.app.Activit ...

  6. winform利用ImageList控件和ListView控件组合制作图片文件浏览器

    winform利用ImageList控件和ListView控件组合制作图片文件浏览器,见图,比较简单,实现LISTVIEW显示文件夹图片功能. 1.选择文件夹功能代码: folderBrowserDi ...

  7. 最简单的解决Chrome浏览器主页被hao123、360和2345篡改的方法是什么

    最简单的解决Chrome浏览器主页被hao123.360和2345篡改的方法是什么 一.总结 一句话总结:打开chrome的安装目录,将chrome.exe改成chrome1.exe即可,然后发送一个 ...

  8. Windows系统的文件浏览器如何触发刷新

    最近开发一个Drive程序,修改注册表添加System Folder Drive后需要通知已打开的每个文件浏览器刷新.最初选择获取对应窗体的句柄并发送WM_KEYDOWN.WM_KEYUP的VK_F5 ...

  9. NodeJs01 文件浏览器

    ES6常用新语法 前言 是时候学点新的JS了! 为了在学习NodeJs之前,能及时用上语言的新特性,我们打算从一开始先学习一下JavaScript语言的最基本最常用新语法.本课程的内容,是已经假设你有 ...

随机推荐

  1. instsrv.exe用法

    这个小工具是用以安装和卸载可执行的服务和指派服务名给这些可执行的服务的.     一:绑定程序和服务 这里我们设定要将F:\cpu.exe 以 abc 的名称显示作为服务的话,我们应当这样子做: 在开 ...

  2. iOS6 与iOS7以及7以上状态栏的颜色设置

    iOS7默认状态栏文字颜色为黑色 修改为白色的方法:(chenyong注意 我的Status bar style 使用的仍是默认值Gray style(default)) 1在Info.plist中设 ...

  3. PAT 1061 - 1064 题解

    这四道题来自 13 年 08 月 30 的 PAT 测试. 代码量不大,思路也比较直接.不过第一题的处理逻辑不太清晰,需要好好把握.稍有不慎就掉进坑里了(很多人被这道 20'的题坑了一个多小时心慌意乱 ...

  4. ListView 泛利

    0ListView基本属性 1介绍 Listview节约内存的几种写法 2技巧一:解决ListView的ItemView中带有Button时,OnItemClick无效的问题  3技巧二Listvie ...

  5. CUDA软件架构—网格(Grid)、线程块(Block)和线程(Thread)的组织关系以及线程索引的计算公式

    网格(Grid).线程块(Block)和线程(Thread)的组织关系 CUDA的软件架构由网格(Grid).线程块(Block)和线程(Thread)组成,相当于把GPU上的计算单元分为若干(2~3 ...

  6. jQuery.noop

    一个空函数 当你仅仅想要传递一个空函数的时候,就用他吧.这对一些插件作者很有用,当插件提供了一个可选的回调函数接口,那么如果调用的时候没有传递这个回调函数,就用jQuery.noop来代替执行.

  7. 一些常用的WebServices

    天气预报Web服务,数据来源于中国气象局 Endpoint  Disco  WSDL IP地址来源搜索 WEB 服务(是目前最完整的IP地址数据) Endpoint  Disco  WSDL 随机英文 ...

  8. Android 项目框架功能整理记录

    用来记录自己在项目用到的框架工具等,新人新记录,希望能对你搭建项目有所帮助 常用框架整理 视图绑定注解框架: butterKnife 网络请求框架: OKHttp 图片加载缓存:Gilde 数据格式解 ...

  9. 如何将任意文件固定在 Win10 的开始屏幕中

    虽然Wox和Launchy是我日常启动程序的主力方式,不过开始屏幕的图标方便归类,这是快速启动工具所不能提供的,因此我也会将最常用的程序在开始屏幕上分类固定. 最近需要将一个常用的批处理文件(*.ba ...

  10. theano 深度学习大全

    1. theano 的设计理念与性能分析 Theano: a CPU and GPU Math Expression Compiler 2. thenao 深度学习 Deep Learning Tut ...