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