实现下面这个简单的文件浏览功能,常用的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. Android四个基本组件(2)之Service 服务与Content Provider内容提供商

    一.Service 维修: 一Service 这是一个长期的生命周期,没有真正的用户界面程序,它可以被用于开发如监视类别节目. 表中播放歌曲的媒体播放器.在一个媒体播放器的应用中.应该会有多个acti ...

  2. 英文构词法 —— ant、ent 后缀

    1. -ant:--人 accountant:会计, account(ac+count):计数,账户: assistant:助手: assist:帮助 descendant:后裔: descend:下 ...

  3. Android Studio ERROR: x86 emulation currently requires hardware acceleration!报错解决傻瓜教程~

    很早之前就碰到过Android Studio模拟器无法启动的问题,今天终于尝试去解决了下,下面将我解决的方法记录下. 模拟器报错信息为: emulator: ERROR: x86 emulation ...

  4. Android于popWindow写弹出菜单

    1.什么是popWindow? popWindow这是对话的方式!文字解说android的方式来使用对话框,这就是所谓的popWindow. 2.popWindow特征 Android的对话框有两种: ...

  5. 批处理文件的工具(java+shell为了实现)

    批处理文件的工具(java+shell为了实现) 有一堆语料须要处理一下才干使用,本来应该能够直接用shell脚本直接处理的. 可是对shell脚本不熟,仅仅会简单的一些命令. 因此就利用java+s ...

  6. ASP.NET Core 配置 EF SQLite 支持 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 配置 EF SQLite 支持 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 配置 EF SQLite 支持 上一章节我有提 ...

  7. 数学公式的规约(reduce)和简化(simplify)

    to simplify notation, 1. 增广(augment) xi=[xi;1],减少一个常数项: 2. 多个求和号 ∥x∥2=xTx 向量 ⇒ 矩阵: 求和号本身也可化为向量矩阵运算: ...

  8. python 教程 第十五章、 结构布局

    第十五章. 结构布局 #!/usr/bin/env python #(1)起始行 "this is a module" #(2)模块文档 import sys #(3)模块导入 d ...

  9. matlab 矢量化编程(三) —— 软阈值函数

    dj,k^=⎧⎩⎨⎪⎪dj,k−λ,dj,k≥λ0,otherwisedj,k+λ,dj,k≤−λ function y = soft(x, T) y = (x - abs(T) > 0) .* ...

  10. vs2013+cocos2d-x-2.2.3组态

    win8/win8.1+vs2013+cocos2d-x-2.2.3组态 前言: 这是我人生第一篇博客,假设你认为不好,还请见谅!!!!! 工具: 1.vs2013 2.Python2.7(百度一大片 ...