Qt的Tab选项卡

原文地址::http://www.voidcn.com/article/p-cvcfremm-uo.html


相关文章

1、Qt实现窗口tabwidget的拖出双击弹回功能----http://www.voidcn.com/article/p-spwfyyrw-bmh.html


#ifndef __TABDLG_H__ 
#define __TABDLG_H__ 
 
#include <QDialog> 
 
class QWidget; 
class QFileInfo; 
class QTabWidget; 
class QDialogButtonBox; 
 
//常规选项卡 
class GeneralTab :  public QWidget 

        Q_OBJECT 
 
public
        GeneralTab( const QFileInfo &fileInfo, QWidget *parent = 0); 
}; 
 
//许可权限 
class PermissionsTab :  public QWidget 

        Q_OBJECT 
 
public
        PermissionsTab( const QFileInfo &fileInfo, QWidget *parent = 0); 
}; 
 
//程序 
class ApplicationsTab :  public QWidget 

        Q_OBJECT 
 
public
        ApplicationsTab( const QFileInfo &fileInfo, QWidget *parent = 0);    
}; 
    
//自定义Tab对话框 
class TabDialog: public QDialog 

public
  TabDialog( const QString &fileName, QWidget *parent = 0);    
private
  QTabWidget *tabWidget; 
  QDialogButtonBox *buttonBox; 
}; 
 
 
#endif  // __TABDLG_H__ 
 
tabdlg.cpp:
 
#include <QTabWidget> 
#include <QWidget> 
#include <QDialog> 
#include <QFileInfo> 
#include <QVBoxLayout> 
#include <QDialogButtonBox> 
#include <QLabel> 
#include <QLineEdit> 
#include <QDateTime> 
#include <QGroupBox> 
#include <QCheckBox> 
#include <QListWidget> 
 
#include  "tabdlg.h" 
 
TabDialog::TabDialog( const QString &fileName, QWidget *parent):QDialog(parent) 

  QFileInfo fileInfo(fileName); 
    
  tabWidget= new QTabWidget; 
  tabWidget->addTab( new GeneralTab(fileName),trUtf8( "常规")); 
  tabWidget->addTab( new PermissionsTab(fileName),trUtf8( "权限")); 
  tabWidget->addTab( new ApplicationsTab(fileName),trUtf8( "应用程序")); 
    
  buttonBox= new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel); 
    
  connect(buttonBox,SIGNAL(accepted()), this,SLOT(accept())); //OK 
  connect(buttonBox,SIGNAL(rejected()), this,SLOT(reject())); //Cancel 
    
  QVBoxLayout *mainLayout= new QVBoxLayout; 
  mainLayout->addWidget(tabWidget); 
  mainLayout->addWidget(buttonBox); 
    
  setLayout(mainLayout); 
    
  setWindowTitle(trUtf8( "Tab对话框")); 

    
//常规面板类构造函数实现    
GeneralTab::GeneralTab( const QFileInfo &fileInfo, QWidget *parent) 
  :QWidget(parent) 

         QLabel *fileNameLabel =  new QLabel(trUtf8( "文件名:")); 
         QLineEdit *fileNameEdit =  new QLineEdit(fileInfo.fileName()); //去掉目录路径前缀后的 
 
         QLabel *pathLabel =  new QLabel(trUtf8( "路径:")); 
         QLabel *pathValueLabel =  new QLabel(fileInfo.absoluteFilePath()); //完整的路径名 
         pathValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken); //设置label的样式 
 
         QLabel *sizeLabel =  new QLabel(trUtf8( "大小:")); 
         qlonglong size = fileInfo.size()/1024; //size()返回字节大小 
         QLabel *sizeValueLabel =  new QLabel(trUtf8( "%1 K").arg(size)); 
         sizeValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken); 
 
         QLabel *lastReadLabel =  new QLabel(trUtf8( "上次读取时间:")); 
         QLabel *lastReadValueLabel =  new QLabel(fileInfo.lastRead().toString()); 
         lastReadValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken); 
 
         QLabel *lastModLabel =  new QLabel(trUtf8( "上次修改时间:")); 
         QLabel *lastModValueLabel =  new QLabel(fileInfo.lastModified().toString()); 
         lastModValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken); 
 
         QVBoxLayout *mainLayout =  new QVBoxLayout; 
         mainLayout->addWidget(fileNameLabel); 
         mainLayout->addWidget(fileNameEdit); 
         mainLayout->addWidget(pathLabel); 
         mainLayout->addWidget(pathValueLabel); 
         mainLayout->addWidget(sizeLabel); 
         mainLayout->addWidget(sizeValueLabel); 
         mainLayout->addWidget(lastReadLabel); 
         mainLayout->addWidget(lastReadValueLabel); 
         mainLayout->addWidget(lastModLabel); 
         mainLayout->addWidget(lastModValueLabel); 
          //mainLayout->addStretch(1); 
         setLayout(mainLayout);    

 
//权限面板类 
PermissionsTab::PermissionsTab( const QFileInfo &fileInfo, QWidget *parent) 
  :QWidget(parent) 

     //群组框 
         QGroupBox *permissionsGroup =  new QGroupBox(trUtf8( "权限")); 
 
         QCheckBox *readable =  new QCheckBox(trUtf8( "可读")); 
          if (fileInfo.isReadable()) 
                 readable->setChecked( true); //勾选 
 
         QCheckBox *writable =  new QCheckBox(trUtf8( "可写")); 
          if ( fileInfo.isWritable() ) 
                 writable->setChecked( true); 
 
         QCheckBox *executable =  new QCheckBox(trUtf8( "可执行")); 
          if ( fileInfo.isExecutable() ) 
                 executable->setChecked( true); 
 
         QGroupBox *ownerGroup =  new QGroupBox(trUtf8( "所有权")); 
 
         QLabel *ownerLabel =  new QLabel(trUtf8( "所有者")); 
         QLabel *ownerValueLabel =  new QLabel(fileInfo.owner()); 
         ownerValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken); 
 
         QLabel *groupLabel =  new QLabel(trUtf8( "组")); 
         QLabel *groupValueLabel =  new QLabel(fileInfo.group()); 
         groupValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken); 
 
         QVBoxLayout *permissionsLayout =  new QVBoxLayout; 
         permissionsLayout->addWidget(readable); 
         permissionsLayout->addWidget(writable); 
         permissionsLayout->addWidget(executable); 
         permissionsGroup->setLayout(permissionsLayout); //权限组 
 
         QVBoxLayout *ownerLayout =  new QVBoxLayout; 
         ownerLayout->addWidget(ownerLabel); 
         ownerLayout->addWidget(ownerValueLabel); 
         ownerLayout->addWidget(groupLabel); 
         ownerLayout->addWidget(groupValueLabel); 
         ownerGroup->setLayout(ownerLayout); //所有权组 
 
         QVBoxLayout *mainLayout =  new QVBoxLayout; 
         mainLayout->addWidget(permissionsGroup); 
         mainLayout->addWidget(ownerGroup); 
          //mainLayout->addStretch(1); 
         setLayout(mainLayout);    

 
//应用程序选项卡类构造函数实现 
ApplicationsTab::ApplicationsTab( const QFileInfo &fileInfo, QWidget *parent) 
  :QWidget(parent) 

         QLabel *topLabel =  new QLabel(trUtf8( "打开方式...:")); 
 
         QListWidget *applicationsListBox =  new QListWidget; 
         QStringList applications; 
 
          for ( int i = 1; i <= 30; ++i) 
                 applications.append(trUtf8( "应用程序 %1").arg(i)); 
         applicationsListBox->insertItems(0, applications); 
 
         QCheckBox *alwaysCheckBox; 
 
          if (fileInfo.suffix().isEmpty()) 
                 alwaysCheckBox =  new QCheckBox(trUtf8( "始终使用该程序" 
                          "打开该类型的文件")); 
          else 
                 alwaysCheckBox =  new QCheckBox(trUtf8( "始终使用该程序" 
                          "打开此扩展名文件 '%1'").arg(fileInfo.suffix())); 
 
         QVBoxLayout *layout =  new QVBoxLayout; 
         layout->addWidget(topLabel); 
         layout->addWidget(applicationsListBox); 
         layout->addWidget(alwaysCheckBox); 
         setLayout(layout); 

 
tabmain.cpp:
 
#include <QApplication> 
#include  "tabdlg.h" 
 
int main( int argc, char* argv[]) 

  QApplication app(argc,argv); 
  TabDialog tabdlg( "./src/tabmain.cpp"); 
  tabdlg.show(); 
   return app.exec(); 

 
 
截图:
 
 
 
本站公众号
   欢迎关注本站公众号,获取更多程序园信息
开发小院