- 浏览: 335334 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
calcyu:
谢谢了
C++ MD5加密实现 -
mylove2060:
navylq 写道 这代码你自己有测试么?
引用自哪里也没有 ...
C++编写Config类读取配置文件 -
navylq:
这代码你自己有测试么?引用自哪里也没有说!
C++编写Config类读取配置文件 -
mylove2060:
tianfeng722 写道出现了乱码,怎么弄啊
编码设置的问 ...
C++ XML解析之TinyXML篇 -
tianfeng722:
出现了乱码,怎么弄啊
C++ XML解析之TinyXML篇
Author:QQ174554431
#pragma once //TraderInformationTable.h #include <QtGui/QTableWidget> #include <QtGui/QHeaderView> class TraderInformationTable : public QTableWidget { Q_OBJECT public: TraderInformationTable(QWidget *parent = 0); ~TraderInformationTable(); void InitHeader(); void FakeTraderRecords(); };
//TraderInformationTable.cpp #include "TraderInformationTable.h" TraderInformationTable::TraderInformationTable(QWidget *parent) : QTableWidget(parent) { InitHeader(); FakeTraderRecords(); resizeColumnsToContents(); } void TraderInformationTable::InitHeader() { verticalHeader()->hide(); QStringList headerList; headerList.append("Trader Id"); headerList.append("Trader Account"); headerList.append("Region"); headerList.append("Buying Power"); headerList.append("Currency"); headerList.append("Office Name"); setColumnCount(headerList.size()); setHorizontalHeaderLabels(headerList); } void TraderInformationTable::FakeTraderRecords() { QTableWidgetItem *item; int rowSize = 0; for(int row = 0 ; row <10; row ++) { rowSize = rowCount(); insertRow(rowSize); for(int i = 0; i<columnCount(); i++) { item = new QTableWidgetItem(); if(i == 0) { item->setText("OPS501"); } else if(i==1) { item->setText("OPS5001_0000000001"); } else if(i==2) { item->setText("Asia"); } else if(i==3) { item->setText("5000000"); } else if(i==4) { item->setText("USD"); } else if(i==5) { item->setText("Asia head office"); } setItem(rowSize,i,item); } } ////////////////////////////////////////////////////////// for(int row = 0 ; row <10; row ++) { rowSize = rowCount(); insertRow(rowSize); for(int i = 0; i<columnCount(); i++) { item = new QTableWidgetItem(); if(i == 0) { item->setText("OPS503"); } else if(i==1) { item->setText("OPS5003_0000000005"); } else if(i==2) { item->setText("North America"); } else if(i==3) { item->setText("50000000000000000"); } else if(i==4) { item->setText("CAD"); } else if(i==5) { item->setText("Canada head office"); } setItem(rowSize,i,item); } } ////////////////////////////////////////////////////////// for(int row = 0 ; row <10; row ++) { rowSize = rowCount(); insertRow(rowSize); for(int i = 0; i<columnCount(); i++) { item = new QTableWidgetItem(); if(i == 0) { item->setText("DFV501"); } else if(i==1) { item->setText("DV5001_0000000002"); } else if(i==2) { item->setText("South America"); } else if(i==3) { item->setText("2000000000"); } else if(i==4) { item->setText("USD"); } else if(i==5) { item->setText("head office capital in Bolivia"); } setItem(rowSize,i,item); } } ////////////////////////////////////////////////////////// for(int row = 0 ; row <10; row ++) { rowSize = rowCount(); insertRow(rowSize); for(int i = 0; i<columnCount(); i++) { item = new QTableWidgetItem(); if(i == 0) { item->setText("DFV502"); } else if(i==1) { item->setText("DV5002_0000000011"); } else if(i==2) { item->setText("Europe"); } else if(i==3) { item->setText("4200000000000000000000000000000000000000000"); } else if(i==4) { item->setText("EUR"); } else if(i==5) { item->setText("London office capital in Britain"); } setItem(rowSize,i,item); } } } TraderInformationTable::~TraderInformationTable() { }
#ifndef EXPORTFILE_H #define EXPORTFILE_H //ExportFile.h #include <QtGui/QDialog> #include <QtGui/QHBoxLayout> #include <QtGui/QAction> #include <QtGui/QMenu> #include <QtGui/QFileDialog> #include <fstream> #include "TraderInformationTable.h" class ExportFile : public QDialog { Q_OBJECT public: ExportFile(QWidget *parent = 0, Qt::WFlags flags = 0); ~ExportFile(); public: void ExportTable(QTableWidget *in_tableWidget); void GetVisualIndexes( QTableWidget* in_table, std::map< int, int> & out_print_index); private slots: void On_Export(); void on_ContextMenu(const QPoint &pos); private: TraderInformationTable *m_traderInformationTable; QHBoxLayout *m_hlayoutTable; QAction *m_ExportAct; }; #endif // EXPORTFILE_H
//ExportFile.cpp #include "exportfile.h" ExportFile::ExportFile(QWidget *parent, Qt::WFlags flags) : QDialog(parent, flags) { m_traderInformationTable = new TraderInformationTable(this); m_hlayoutTable = new QHBoxLayout(this); m_hlayoutTable->addWidget(m_traderInformationTable); setLayout(m_hlayoutTable); m_ExportAct = new QAction(tr("Export"),this); QObject::connect(m_ExportAct, SIGNAL(triggered()), this,SLOT(On_Export())); setContextMenuPolicy(Qt::CustomContextMenu); QObject::connect(this,SIGNAL(customContextMenuRequested(const QPoint &)), this,SLOT(on_ContextMenu(const QPoint &))); setMinimumSize(800,500); } ExportFile::~ExportFile() { } void ExportFile::on_ContextMenu(const QPoint &pos) { QMenu menu(this); menu.addAction(m_ExportAct); menu.exec(QCursor::pos()); } void ExportFile::On_Export() { ExportTable(m_traderInformationTable); } void ExportFile::ExportTable(QTableWidget *in_tableWidget) { std::string filename; filename = "*.txt"; QFileDialog fileDlg(this); fileDlg.setFileMode(QFileDialog::AnyFile); fileDlg.setNameFilter(tr("Text (*.txt)")); fileDlg.setViewMode(QFileDialog::Detail); fileDlg.setAcceptMode(QFileDialog::AcceptSave); fileDlg.selectFile((QString)filename.c_str()); if (fileDlg.exec()) { QStringList fileNames = fileDlg.selectedFiles(); filename = fileNames[0].toStdString(); } else { return; } std::ofstream TxtFile(filename.c_str()); std::map< int, int> exportIndexMap; GetVisualIndexes( in_tableWidget, exportIndexMap); //calculate the max length for each field std::map<int, int> colMaxLengthMap; int colLength = 0; int columnCount = exportIndexMap.size(); for(unsigned int col = 0 ; col < exportIndexMap.size(); col++) { colLength = in_tableWidget->horizontalHeaderItem( exportIndexMap[col])->text().toStdString().length(); if(colLength>colMaxLengthMap[col]) { colMaxLengthMap[col] = colLength; } } int rowCount = in_tableWidget->rowCount(); for(int row = 0 ; row < rowCount; row++) { columnCount = exportIndexMap.size(); for(int col = 0 ; col < columnCount ; col++) { colLength = in_tableWidget->item(row, exportIndexMap[col])->text().toStdString().length(); if(colLength>colMaxLengthMap[col]) { colMaxLengthMap[col] = colLength; } } } //write the file int diff = 0; columnCount = exportIndexMap.size(); for(unsigned int col = 0 ; col < exportIndexMap.size(); col++) { std::string padText; int diff = colMaxLengthMap[col] - in_tableWidget->horizontalHeaderItem( exportIndexMap[col])->text().toStdString().length()-1; TxtFile << in_tableWidget->horizontalHeaderItem( exportIndexMap[col])->text().toStdString(); for(int i= diff ; i>=0 ; i--) { padText+=" "; } TxtFile <<padText<<char(9); } TxtFile << std::endl; rowCount = in_tableWidget->rowCount(); for(int row = 0 ; row < rowCount; row++) { columnCount = exportIndexMap.size(); for(int col = 0 ; col < columnCount; col++) { std::string padText; int diff = colMaxLengthMap[col] - in_tableWidget->item(row, exportIndexMap[col])->text().toStdString().length()-1; TxtFile << in_tableWidget->item(row, exportIndexMap[col])->text().toStdString(); for(int i= diff ; i>=0 ; i--) { padText+=" "; } if( col != exportIndexMap.size()-1) { TxtFile<<padText<< char(9); } else { TxtFile<<padText<< std::endl; } } } TxtFile.close(); } void ExportFile::GetVisualIndexes( QTableWidget* in_table, std::map< int, int> & out_print_index) { int ColLen = in_table->columnCount(); for(int col = 0 ; col < ColLen; col++) { if( in_table->isColumnHidden( col )) { continue; } int VisualIndex = in_table->visualColumn( col); out_print_index[ VisualIndex ] = col; } }
发表评论
-
QT-设置QLineEdit无边框
2010-09-21 13:55 8626QLineEdit *lineEdit = new QLi ... -
QT-对点击表的记录时不对headerView(表头行)光亮(获取焦点)
2010-09-17 15:47 1843//m_tableWidget是QTableWidget的 ... -
QT-从QLayout中遍历出组件(Widget)
2010-09-02 14:13 6863// m_historyLayout是某成员的父组件,假设 ... -
QT-QLineEdit输入只允许大于0的整数
2010-08-24 09:23 2812QLineEdit *lineEdit = new QL ... -
QT-刷新表,去除空白区域,显示正常
2010-08-12 16:14 1445Author:QQ174554431 假设有个tabl ... -
QT-使QSplitter分割线不能移动
2010-08-10 11:02 7256Author:QQ174554431 对一成员QSplit ... -
QT-锁定对话框固定不能拉伸和定位并且不能关闭
2010-07-14 14:06 7059Author:QQ174554431 //lockwi ... -
QT-发布QT应用程序,用户不能运行的问题
2010-06-22 23:29 3494编译工具Microsoft VC 2005 加上QT应用程序所 ... -
QT-QTableWidgetItem的一些函数应用
2010-06-03 15:58 1731QTableWidgetItem *qIt ... -
QT-QTableWidget的一些函数应用
2010-06-03 15:54 2110setSelectionBehavior(QAbst ... -
QT-Plugin的创建和使用
2010-05-27 23:30 1427Author:QQ174554431 一个word文件和一 ... -
QT-setFrameStyle
2010-05-19 19:30 1956QLabel *userLabel = new QLabe ...
相关推荐
你可以根据实际需求扩展MIME数据格式,包含更多的信息,如行索引、列索引等。此外,还可以通过设置`dragMoveEvent`来控制拖动过程中的视觉效果,比如改变鼠标形状或高亮目标区域。 总之,Qt的拖放功能使得...
QT4中的QTableWidget是Qt库提供的一种用于在GUI应用程序中显示二维表格数据的控件。它是QTableView的变体,提供了更多的交互性,比如直接编辑单元格等。本篇文章将详细探讨如何利用QTableWidget导入和导出Excel数据...
在 Qt 框架中,要在 QTableWidget的表头中添加复选框,可以通过继承 QHeaderView 并重写 paintSection 方法来实现。 介绍一种继承 QHeaderView的方法分别实现QTableWidget中添加复选框,可全选/全不选/部分选。
QT中的QTableWidget是Qt Widgets库中的一个关键组件,它被广泛用于展示表格数据,具有丰富的功能和灵活性。QTableWidget允许用户进行编辑、排序、选择行或单元格,并可以自定义样式,使得在GUI应用中展示数据变得...
在QT编程中,高效地导入和导出Excel数据并将其显示在`tableWidget`中是一项常见的需求。这里我们将深入探讨如何实现这一功能,以及优化性能的方法。QT是一个跨平台的应用程序开发框架,提供了丰富的GUI组件,`...
本实例将深入探讨如何使用QTableWidget来绘制数据表格,并提供一个实用的示例,这对于初学者掌握Qt界面设计是十分有益的。 首先,我们需要理解QTableWidget的基本结构。QTableWidget是一个基于QTableView和...
在QT编程中,`QTableWidget` 和 `QTableView` 是两种常用的用于显示表格数据的控件。它们都属于Qt的`QtWidgets`模块,但各自有着不同的特性和使用场景。今天我们将深入探讨如何实现标题中提及的几个关键功能:自定义...
QT导出EXCEL,从tableWidget列表获取数据导出到excel文件。导出过程使用了excel模板文件,可以从tableWidget读取固定的几列数据导出到excel文件中。其中excel事先设置好文件格式,后续直接读数写数即可。开发过程...
在Qt编程中,QTableWidget是一个非常常用的控件,用于展示二维数据,类似于电子表格。在处理大量数据时,为了提高用户体验,我们通常会为QTableWidget实现分页和翻页功能,使得用户可以轻松浏览数据。本篇将详细介绍...
实例QT程序 —— QTableWidget 表格行的上下移动 编译可以直接运行。 运行环境WIN10 Qt5.9.7 。 资源为源码压缩包: TestMoveRow.rar 相关文章链接如下: ...
3. 设置新创建的单元格的`QTableWidgetItem`,并确保其`Qt::ItemIsEnabled`和`Qt::ItemIsSelectable`标志设置为`false`,这样用户就不会误操作其他被合并的列。 对于行的合并,QT提供了`QTableWidget::mergeCells()...
在Qt框架中,`QTableWidget` 是一个非常常用的组件,用于展示表格数据。它提供了丰富的功能,如编辑、排序和选择等。然而,当默认的功能无法满足特定需求时,我们可能需要对`QTableWidget`进行自定义绘制,这就是...
在Qt编程中,`QTableWidget`是一个非常常用的控件,用于展示二维表格数据。有时候,我们希望在表格的表头中添加复选框,以便实现全选或取消全选的功能,这在处理大量数据时尤其有用。本篇文章将详细解释如何在`...
本教程将详细介绍如何在Qt应用中实现XML文件的读取与写入,并将数据展示到QTableWidget中,以及从QTableWidget中保存回XML文件。 首先,Qt提供了QDomDocument类来处理XML文档,它可以解析XML文件并创建一个内存中的...
在Qt编程环境中,`QTableWidget` 是一个非常常用的组件,用于展示二维表格数据。它提供了灵活的界面和丰富的功能,适用于多种数据展示需求。在某些情况下,我们可能需要创建一个多行表头来更好地组织和解释复杂的...
QT QTableView QTableWidget 复杂表头(多行表头) 、(冻结、固定特定的行),具体效果看博客: https://blog.csdn.net/xiezhongyuan07/article/details/82857631
Qt QTableWidget是Qt库中的一个重要组件,用于在GUI应用程序中展示表格数据。它提供了丰富的功能,包括但不限于添加、删除、修改表格中的项,并且支持用户交互,如通过点击表头实现数据排序。以下是对这些功能的详细...
在Qt编程中,QTableWidget是一个非常常用的组件,用于展示二维数据,通常用于创建简单的表格。然而,有时候我们需要创建更复杂的表格布局,比如带有多行表头的表格。标题"qt 表格多行表头,复杂表头"正是指向这样一...