程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> QT DEMO翻譯之--對話框部分(一)--tabdialog

QT DEMO翻譯之--對話框部分(一)--tabdialog

編輯:關於C語言

  

選項卡對話框的例子展示了如何使用QTabWidget類構建一個選項卡對話框。

對話框提供了應用程序和用戶交互的有效途徑,但是復雜的對話框經常會占用很大的屏幕面積。通過在對話框中使用選項卡,信息可以分成不同的類別。

選項卡對話框的例子由一個TabDialog類和兩個普通的按鈕組成。TabDialog類提供了3個選項卡和每個特定文件的包含信息;兩個按鈕用於接收或拒絕對話框的內容。

TabDialog 類的定義

TabDialog類是QDialog的一個子類,它顯示一個QTabWidget部件和兩個標准對話框按鈕。類的定義只包含的QTabWidget類的構造函數和私有數據成員。

class TabDialog : public QDialog

 {

     Q_OBJECT

 public:

     TabDialog(const QString &fileName, QWidget *parent = 0);

 private:

     QTabWidget *tabWidget;

     QDialogButtonBox *buttonBox;

 };

在這個例子中,TabDialog會被用來作為一個頂級窗口,我們定義構造函數,以便它可以擁有一個父widget部件,從而可以顯示在應用程序主窗口頂部的中心。

TabDialog Class類的實現

構造函數調用QDialog的構造函數,並創建一個指定文件名的QFileInfo對象。

TabDialog::TabDialog(const QString &fileName, QWidget *parent)
     : QDialog(parent)
 {
     QFileInfo fileInfo(fileName);
 
     tabWidget = new QTabWidget;
     tabWidget->addTab(new GeneralTab(fileInfo), tr("General"));
     tabWidget->addTab(new PermissionsTab(fileInfo), tr("Permissions"));
     tabWidget->addTab(new ApplicationsTab(fileInfo), tr("Applications"));

tabWidget部件由三個包含了文件信息的自定義部件組成。我們構建這些部件時沒有指定父對象,因為他們會被tabWidget部件添加為子對象。

我們創建了兩個標准的按鈕,並將他們和對話框的相應槽函數關聯。

     buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok
                                      | QDialogButtonBox::Cancel);
 
     connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
     connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));

在對話框中,我們將tab widget放在按鈕的上面。

     QVBoxLayout *mainLayout = new QVBoxLayout;
     mainLayout->addWidget(tabWidget);
     mainLayout->addWidget(buttonBox);
     setLayout(mainLayout);

最後,我們設置對話框的標題。

setWindowTitle(tr("Tab Dialog"));
 }

每個選項卡都是從QWidget繼承的子類,並只提供構造函數。

GeneralTab Class類的定義

GeneralTab部件的定義很簡單,因為我們只對如何在一個標簽中顯示一個widget的內容感興趣。

class GeneralTab : public QWidget
 {
     Q_OBJECT
 
 public:
     GeneralTab(const QFileInfo &fileInfo, QWidget *parent = 0);
 };

GeneralTab Class類的實現

GeneralTab部件簡單地顯示一些由TabDialog傳入的文件的信息,GeneralTab中的各種widget都用來顯示和文件信息相關的內容,這些widget在GeneralTab中使用垂直布局。

GeneralTab::GeneralTab(const QFileInfo &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->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->setFrameStyle(QFrame::Panel | QFrame::Sunken);
 
     QLabel *lastReadLabel = new QLabel(tr("Last Read:"));
     QLabel *lastReadValueLabel = new QLabel(fileInfo.lastRead().toString());
     lastReadValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);
 
     QLabel *lastModLabel = new QLabel(tr("Last Modified:"));
     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);
 }

    ApplicationsTab和PermissionsTab的定義與實現和GeneralTab類相似。

本文出自 “阿潘的兔子” 博客,轉載請與作者聯系!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved