Qt的Tab选项卡

简介:
tabdlg.h:
 
InBlock.gif#ifndef __TABDLG_H__ 
InBlock.gif#define __TABDLG_H__ 
InBlock.gif 
InBlock.gif#include <QDialog> 
InBlock.gif 
InBlock.gif class QWidget; 
InBlock.gif class QFileInfo; 
InBlock.gif class QTabWidget; 
InBlock.gif class QDialogButtonBox; 
InBlock.gif 
InBlock.gif //常规选项卡 
InBlock.gif class GeneralTab :  public QWidget 
InBlock.gif
InBlock.gif        Q_OBJECT 
InBlock.gif 
InBlock.gif public
InBlock.gif        GeneralTab( const QFileInfo &fileInfo, QWidget *parent = 0); 
InBlock.gif}; 
InBlock.gif 
InBlock.gif //许可权限 
InBlock.gif class PermissionsTab :  public QWidget 
InBlock.gif
InBlock.gif        Q_OBJECT 
InBlock.gif 
InBlock.gif public
InBlock.gif        PermissionsTab( const QFileInfo &fileInfo, QWidget *parent = 0); 
InBlock.gif}; 
InBlock.gif 
InBlock.gif //程序 
InBlock.gif class ApplicationsTab :  public QWidget 
InBlock.gif
InBlock.gif        Q_OBJECT 
InBlock.gif 
InBlock.gif public
InBlock.gif        ApplicationsTab( const QFileInfo &fileInfo, QWidget *parent = 0);    
InBlock.gif}; 
InBlock.gif    
InBlock.gif //自定义Tab对话框 
InBlock.gif class TabDialog: public QDialog 
InBlock.gif
InBlock.gif public
InBlock.gif  TabDialog( const QString &fileName, QWidget *parent = 0);    
InBlock.gif private
InBlock.gif  QTabWidget *tabWidget; 
InBlock.gif  QDialogButtonBox *buttonBox; 
InBlock.gif}; 
InBlock.gif 
InBlock.gif 
InBlock.gif#endif  // __TABDLG_H__ 
 
tabdlg.cpp:
 
InBlock.gif#include <QTabWidget> 
InBlock.gif#include <QWidget> 
InBlock.gif#include <QDialog> 
InBlock.gif#include <QFileInfo> 
InBlock.gif#include <QVBoxLayout> 
InBlock.gif#include <QDialogButtonBox> 
InBlock.gif#include <QLabel> 
InBlock.gif#include <QLineEdit> 
InBlock.gif#include <QDateTime> 
InBlock.gif#include <QGroupBox> 
InBlock.gif#include <QCheckBox> 
InBlock.gif#include <QListWidget> 
InBlock.gif 
InBlock.gif#include  "tabdlg.h" 
InBlock.gif 
InBlock.gifTabDialog::TabDialog( const QString &fileName, QWidget *parent):QDialog(parent) 
InBlock.gif
InBlock.gif  QFileInfo fileInfo(fileName); 
InBlock.gif    
InBlock.gif  tabWidget= new QTabWidget; 
InBlock.gif  tabWidget->addTab( new GeneralTab(fileName),trUtf8( "常规")); 
InBlock.gif  tabWidget->addTab( new PermissionsTab(fileName),trUtf8( "权限")); 
InBlock.gif  tabWidget->addTab( new ApplicationsTab(fileName),trUtf8( "应用程序")); 
InBlock.gif    
InBlock.gif  buttonBox= new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel); 
InBlock.gif    
InBlock.gif  connect(buttonBox,SIGNAL(accepted()), this,SLOT(accept())); //OK 
InBlock.gif  connect(buttonBox,SIGNAL(rejected()), this,SLOT(reject())); //Cancel 
InBlock.gif    
InBlock.gif  QVBoxLayout *mainLayout= new QVBoxLayout; 
InBlock.gif  mainLayout->addWidget(tabWidget); 
InBlock.gif  mainLayout->addWidget(buttonBox); 
InBlock.gif    
InBlock.gif  setLayout(mainLayout); 
InBlock.gif    
InBlock.gif  setWindowTitle(trUtf8( "Tab对话框")); 
InBlock.gif
InBlock.gif    
InBlock.gif //常规面板类构造函数实现    
InBlock.gifGeneralTab::GeneralTab( const QFileInfo &fileInfo, QWidget *parent) 
InBlock.gif  :QWidget(parent) 
InBlock.gif
InBlock.gif         QLabel *fileNameLabel =  new QLabel(trUtf8( "文件名:")); 
InBlock.gif         QLineEdit *fileNameEdit =  new QLineEdit(fileInfo.fileName()); //去掉目录路径前缀后的 
InBlock.gif 
InBlock.gif         QLabel *pathLabel =  new QLabel(trUtf8( "路径:")); 
InBlock.gif         QLabel *pathValueLabel =  new QLabel(fileInfo.absoluteFilePath()); //完整的路径名 
InBlock.gif         pathValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken); //设置label的样式 
InBlock.gif 
InBlock.gif         QLabel *sizeLabel =  new QLabel(trUtf8( "大小:")); 
InBlock.gif         qlonglong size = fileInfo.size()/1024; //size()返回字节大小 
InBlock.gif         QLabel *sizeValueLabel =  new QLabel(trUtf8( "%1 K").arg(size)); 
InBlock.gif         sizeValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken); 
InBlock.gif 
InBlock.gif         QLabel *lastReadLabel =  new QLabel(trUtf8( "上次读取时间:")); 
InBlock.gif         QLabel *lastReadValueLabel =  new QLabel(fileInfo.lastRead().toString()); 
InBlock.gif         lastReadValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken); 
InBlock.gif 
InBlock.gif         QLabel *lastModLabel =  new QLabel(trUtf8( "上次修改时间:")); 
InBlock.gif         QLabel *lastModValueLabel =  new QLabel(fileInfo.lastModified().toString()); 
InBlock.gif         lastModValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken); 
InBlock.gif 
InBlock.gif         QVBoxLayout *mainLayout =  new QVBoxLayout; 
InBlock.gif         mainLayout->addWidget(fileNameLabel); 
InBlock.gif         mainLayout->addWidget(fileNameEdit); 
InBlock.gif         mainLayout->addWidget(pathLabel); 
InBlock.gif         mainLayout->addWidget(pathValueLabel); 
InBlock.gif         mainLayout->addWidget(sizeLabel); 
InBlock.gif         mainLayout->addWidget(sizeValueLabel); 
InBlock.gif         mainLayout->addWidget(lastReadLabel); 
InBlock.gif         mainLayout->addWidget(lastReadValueLabel); 
InBlock.gif         mainLayout->addWidget(lastModLabel); 
InBlock.gif         mainLayout->addWidget(lastModValueLabel); 
InBlock.gif          //mainLayout->addStretch(1); 
InBlock.gif         setLayout(mainLayout);    
InBlock.gif
InBlock.gif 
InBlock.gif //权限面板类 
InBlock.gifPermissionsTab::PermissionsTab( const QFileInfo &fileInfo, QWidget *parent) 
InBlock.gif  :QWidget(parent) 
InBlock.gif
InBlock.gif     //群组框 
InBlock.gif         QGroupBox *permissionsGroup =  new QGroupBox(trUtf8( "权限")); 
InBlock.gif 
InBlock.gif         QCheckBox *readable =  new QCheckBox(trUtf8( "可读")); 
InBlock.gif          if (fileInfo.isReadable()) 
InBlock.gif                 readable->setChecked( true); //勾选 
InBlock.gif 
InBlock.gif         QCheckBox *writable =  new QCheckBox(trUtf8( "可写")); 
InBlock.gif          if ( fileInfo.isWritable() ) 
InBlock.gif                 writable->setChecked( true); 
InBlock.gif 
InBlock.gif         QCheckBox *executable =  new QCheckBox(trUtf8( "可执行")); 
InBlock.gif          if ( fileInfo.isExecutable() ) 
InBlock.gif                 executable->setChecked( true); 
InBlock.gif 
InBlock.gif         QGroupBox *ownerGroup =  new QGroupBox(trUtf8( "所有权")); 
InBlock.gif 
InBlock.gif         QLabel *ownerLabel =  new QLabel(trUtf8( "所有者")); 
InBlock.gif         QLabel *ownerValueLabel =  new QLabel(fileInfo.owner()); 
InBlock.gif         ownerValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken); 
InBlock.gif 
InBlock.gif         QLabel *groupLabel =  new QLabel(trUtf8( "组")); 
InBlock.gif         QLabel *groupValueLabel =  new QLabel(fileInfo.group()); 
InBlock.gif         groupValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken); 
InBlock.gif 
InBlock.gif         QVBoxLayout *permissionsLayout =  new QVBoxLayout; 
InBlock.gif         permissionsLayout->addWidget(readable); 
InBlock.gif         permissionsLayout->addWidget(writable); 
InBlock.gif         permissionsLayout->addWidget(executable); 
InBlock.gif         permissionsGroup->setLayout(permissionsLayout); //权限组 
InBlock.gif 
InBlock.gif         QVBoxLayout *ownerLayout =  new QVBoxLayout; 
InBlock.gif         ownerLayout->addWidget(ownerLabel); 
InBlock.gif         ownerLayout->addWidget(ownerValueLabel); 
InBlock.gif         ownerLayout->addWidget(groupLabel); 
InBlock.gif         ownerLayout->addWidget(groupValueLabel); 
InBlock.gif         ownerGroup->setLayout(ownerLayout); //所有权组 
InBlock.gif 
InBlock.gif         QVBoxLayout *mainLayout =  new QVBoxLayout; 
InBlock.gif         mainLayout->addWidget(permissionsGroup); 
InBlock.gif         mainLayout->addWidget(ownerGroup); 
InBlock.gif          //mainLayout->addStretch(1); 
InBlock.gif         setLayout(mainLayout);    
InBlock.gif
InBlock.gif 
InBlock.gif //应用程序选项卡类构造函数实现 
InBlock.gifApplicationsTab::ApplicationsTab( const QFileInfo &fileInfo, QWidget *parent) 
InBlock.gif  :QWidget(parent) 
InBlock.gif
InBlock.gif         QLabel *topLabel =  new QLabel(trUtf8( "打开方式...:")); 
InBlock.gif 
InBlock.gif         QListWidget *applicationsListBox =  new QListWidget; 
InBlock.gif         QStringList applications; 
InBlock.gif 
InBlock.gif          for ( int i = 1; i <= 30; ++i) 
InBlock.gif                 applications.append(trUtf8( "应用程序 %1").arg(i)); 
InBlock.gif         applicationsListBox->insertItems(0, applications); 
InBlock.gif 
InBlock.gif         QCheckBox *alwaysCheckBox; 
InBlock.gif 
InBlock.gif          if (fileInfo.suffix().isEmpty()) 
InBlock.gif                 alwaysCheckBox =  new QCheckBox(trUtf8( "始终使用该程序" 
InBlock.gif                          "打开该类型的文件")); 
InBlock.gif          else 
InBlock.gif                 alwaysCheckBox =  new QCheckBox(trUtf8( "始终使用该程序" 
InBlock.gif                          "打开此扩展名文件 '%1'").arg(fileInfo.suffix())); 
InBlock.gif 
InBlock.gif         QVBoxLayout *layout =  new QVBoxLayout; 
InBlock.gif         layout->addWidget(topLabel); 
InBlock.gif         layout->addWidget(applicationsListBox); 
InBlock.gif         layout->addWidget(alwaysCheckBox); 
InBlock.gif         setLayout(layout); 
InBlock.gif
 
tabmain.cpp:
 
InBlock.gif#include <QApplication> 
InBlock.gif#include  "tabdlg.h" 
InBlock.gif 
InBlock.gif int main( int argc, char* argv[]) 
InBlock.gif
InBlock.gif  QApplication app(argc,argv); 
InBlock.gif  TabDialog tabdlg( "./src/tabmain.cpp"); 
InBlock.gif  tabdlg.show(); 
InBlock.gif   return app.exec(); 
InBlock.gif
 
 
截图:
 
 
 






本文转自 xcf007 51CTO博客,原文链接:http://blog.51cto.com/xcf007/106772,如需转载请自行联系原作者

相关文章
|
7月前
|
数据安全/隐私保护
PyQt5-Qt Designer控件之间的伙伴关系和Tab顺序如何设置?
PyQt5-Qt Designer控件之间的伙伴关系和Tab顺序如何设置?
45 0
PyQt5-Qt Designer控件之间的伙伴关系和Tab顺序如何设置?
|
5月前
|
C++ 索引
C++ Qt开发:Tab与Tree组件实现分页菜单
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍`tabWidget`选择夹组件与`TreeWidget`树形选择组件,的常用方法及灵活运用。
59 0
C++ Qt开发:Tab与Tree组件实现分页菜单
|
5月前
[Qt5&控件] 选项卡tabWidget控件隐藏&增加tab个数
[Qt5&控件] 选项卡tabWidget控件隐藏&增加tab个数
68 0
|
算法 容器
Qt 设计界面中 tab widget模块的添加和删除(手动拖拽)
Qt 设计界面中 tab widget模块的添加和删除(手动拖拽)
Qt 设计界面中 tab widget模块的添加和删除(手动拖拽)
|
C++
C/C++ Qt Tree与Tab组件实现分页菜单
虽然`TreeWidget`组件可以实现多节点的增删改查,但多节点操作显然很麻烦,在一般的应用场景中基本上只使用一层结构即可解决大部分开发问题,`TreeWidget`组件通常可配合`TabWidget`组件,实现一个类似于树形菜单栏的功能,当用户点击菜单栏中的选项时则会跳转到不同的页面上。
292 0
C/C++ Qt Tree与Tab组件实现分页菜单
Qt之Tab键切换焦点顺序
简介 Qt的窗口部件按用户的习惯来处理键盘焦点。也就是说,其出发点是用户的焦点能定向到任何一个窗口,或者窗口中任何一个部件。 焦点获取方式比较多,例如:鼠标点击、Tab键切换、快捷键、鼠标滚轮等。 习惯性的,我们经常会使用Tab键来控制焦点顺序,比如:用户注册时,个人信息输入框焦点的切换、执行按钮焦点的切换等。 在添加部件之后,默认情况下,Tab键也是可以切换焦点的,
1805 0
|
2月前
|
算法 编译器 Linux
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
【Qt4 部署】ARM系统上使用Qt 4 进行开发的QWS 等环境变量部署
28 0
|
2月前
|
网络协议 C++
C++ Qt开发:QTcpSocket网络通信组件
`QTcpSocket`和`QTcpServer`是Qt中用于实现基于TCP(Transmission Control Protocol)通信的两个关键类。TCP是一种面向连接的协议,它提供可靠的、双向的、面向字节流的通信。这两个类允许Qt应用程序在网络上建立客户端和服务器之间的连接。Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍如何运用`QTcpSocket`组件实现基于TCP的网络通信功能。
44 8
C++ Qt开发:QTcpSocket网络通信组件
|
14天前
|
开发框架 编译器 C++
Qt:一个强大的跨平台C++应用程序开发框架
Qt:一个强大的跨平台C++应用程序开发框架
31 1

推荐镜像

更多