Qt的Tab选项卡

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