Tab Dialog Example▲
Sélectionnez
/**
**************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** BSD License Usage
** Alternatively, you may use this file under the terms of the BSD license
** as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of The Qt Company Ltd nor the names of its
** contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
***************************************************************************
*/
#include <QtWidgets>
#include
"tabdialog.h"
TabDialog::
TabDialog(const
QString &
amp;fileName, QWidget *
parent)
:
QDialog(parent)
{
QFileInfo fileInfo(fileName);
tabWidget =
new
QTabWidget;
tabWidget-&
gt;addTab(new
GeneralTab(fileInfo), tr("General"
));
tabWidget-&
gt;addTab(new
PermissionsTab(fileInfo), tr("Permissions"
));
tabWidget-&
gt;addTab(new
ApplicationsTab(fileInfo), tr("Applications"
));
buttonBox =
new
QDialogButtonBox(QDialogButtonBox::
Ok
|
QDialogButtonBox::
Cancel);
connect(buttonBox, &
amp;QDialogButtonBox::
accepted, this
, &
amp;QDialog::
accept);
connect(buttonBox, &
amp;QDialogButtonBox::
rejected, this
, &
amp;QDialog::
reject);
QVBoxLayout *
mainLayout =
new
QVBoxLayout;
mainLayout-&
gt;addWidget(tabWidget);
mainLayout-&
gt;addWidget(buttonBox);
setLayout(mainLayout);
setWindowTitle(tr("Tab Dialog"
));
}
GeneralTab::
GeneralTab(const
QFileInfo &
amp;fileInfo, QWidget *
parent)
:
QWidget(parent)
{
QLabel *
fileNameLabel =
new
QLabel(tr("File Name:"
));
QLineEdit *
fileNameEdit =
new
QLineEdit(fileInfo.fileName());
QLabel *
pathLabel =
new
QLabel(tr("Path:"
));
QLabel *
pathValueLabel =
new
QLabel(fileInfo.absoluteFilePath());
pathValueLabel-&
gt;setFrameStyle(QFrame::
Panel |
QFrame::
Sunken);
QLabel *
sizeLabel =
new
QLabel(tr("Size:"
));
qlonglong size =
fileInfo.size()/
1024
;
QLabel *
sizeValueLabel =
new
QLabel(tr("%1 K"
).arg(size));
sizeValueLabel-&
gt;setFrameStyle(QFrame::
Panel |
QFrame::
Sunken);
QLabel *
lastReadLabel =
new
QLabel(tr("Last Read:"
));
QLabel *
lastReadValueLabel =
new
QLabel(fileInfo.lastRead().toString());
lastReadValueLabel-&
gt;setFrameStyle(QFrame::
Panel |
QFrame::
Sunken);
QLabel *
lastModLabel =
new
QLabel(tr("Last Modified:"
));
QLabel *
lastModValueLabel =
new
QLabel(fileInfo.lastModified().toString());
lastModValueLabel-&
gt;setFrameStyle(QFrame::
Panel |
QFrame::
Sunken);
QVBoxLayout *
mainLayout =
new
QVBoxLayout;
mainLayout-&
gt;addWidget(fileNameLabel);
mainLayout-&
gt;addWidget(fileNameEdit);
mainLayout-&
gt;addWidget(pathLabel);
mainLayout-&
gt;addWidget(pathValueLabel);
mainLayout-&
gt;addWidget(sizeLabel);
mainLayout-&
gt;addWidget(sizeValueLabel);
mainLayout-&
gt;addWidget(lastReadLabel);
mainLayout-&
gt;addWidget(lastReadValueLabel);
mainLayout-&
gt;addWidget(lastModLabel);
mainLayout-&
gt;addWidget(lastModValueLabel);
mainLayout-&
gt;addStretch(1
);
setLayout(mainLayout);
}
PermissionsTab::
PermissionsTab(const
QFileInfo &
amp;fileInfo, QWidget *
parent)
:
QWidget(parent)
{
QGroupBox *
permissionsGroup =
new
QGroupBox(tr("Permissions"
));
QCheckBox *
readable =
new
QCheckBox(tr("Readable"
));
if
(fileInfo.isReadable())
readable-&
gt;setChecked(true
);
QCheckBox *
writable =
new
QCheckBox(tr("Writable"
));
if
( fileInfo.isWritable() )
writable-&
gt;setChecked(true
);
QCheckBox *
executable =
new
QCheckBox(tr("Executable"
));
if
( fileInfo.isExecutable() )
executable-&
gt;setChecked(true
);
QGroupBox *
ownerGroup =
new
QGroupBox(tr("Ownership"
));
QLabel *
ownerLabel =
new
QLabel(tr("Owner"
));
QLabel *
ownerValueLabel =
new
QLabel(fileInfo.owner());
ownerValueLabel-&
gt;setFrameStyle(QFrame::
Panel |
QFrame::
Sunken);
QLabel *
groupLabel =
new
QLabel(tr("Group"
));
QLabel *
groupValueLabel =
new
QLabel(fileInfo.group());
groupValueLabel-&
gt;setFrameStyle(QFrame::
Panel |
QFrame::
Sunken);
QVBoxLayout *
permissionsLayout =
new
QVBoxLayout;
permissionsLayout-&
gt;addWidget(readable);
permissionsLayout-&
gt;addWidget(writable);
permissionsLayout-&
gt;addWidget(executable);
permissionsGroup-&
gt;setLayout(permissionsLayout);
QVBoxLayout *
ownerLayout =
new
QVBoxLayout;
ownerLayout-&
gt;addWidget(ownerLabel);
ownerLayout-&
gt;addWidget(ownerValueLabel);
ownerLayout-&
gt;addWidget(groupLabel);
ownerLayout-&
gt;addWidget(groupValueLabel);
ownerGroup-&
gt;setLayout(ownerLayout);
QVBoxLayout *
mainLayout =
new
QVBoxLayout;
mainLayout-&
gt;addWidget(permissionsGroup);
mainLayout-&
gt;addWidget(ownerGroup);
mainLayout-&
gt;addStretch(1
);
setLayout(mainLayout);
}
ApplicationsTab::
ApplicationsTab(const
QFileInfo &
amp;fileInfo, QWidget *
parent)
:
QWidget(parent)
{
QLabel *
topLabel =
new
QLabel(tr("Open with:"
));
QListWidget *
applicationsListBox =
new
QListWidget;
QStringList applications;
for
(int
i =
1
; i &
lt;=
30
; ++
i)
applications.append(tr("Application %1"
).arg(i));
applicationsListBox-&
gt;insertItems(0
, applications);
QCheckBox *
alwaysCheckBox;
if
(fileInfo.suffix().isEmpty())
alwaysCheckBox =
new
QCheckBox(tr("Always use this application to "
"open this type of file"
));
else
alwaysCheckBox =
new
QCheckBox(tr("Always use this application to "
"open files with the extension '%1'"
).arg(fileInfo.suffix()));
QVBoxLayout *
layout =
new
QVBoxLayout;
layout-&
gt;addWidget(topLabel);
layout-&
gt;addWidget(applicationsListBox);
layout-&
gt;addWidget(alwaysCheckBox);
setLayout(layout);
}