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