首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Qt 範例翻譯:分頁對話框 完整實作解析

     編輯:關於C語言

範例簡介

「分頁對話框」示範如何使用 QTabWidget 建構含多個分頁的對話框。透過分頁將複雜資訊分類,避免單一對話框佔用過多螢幕空間。範例包含 TabDialog 主類別與三個自訂分頁(GeneralTab、PermissionsTab、ApplicationsTab),以及標準的「確定/取消」按鈕。

TabDialog 類別設計

類別定義

class TabDialog : public QDialog {
    Q_OBJECT
public:
    explicit TabDialog(const QString &fileName, QWidget *parent = nullptr);
private:
    QTabWidget *tabWidget;
    QDialogButtonBox *buttonBox;
};
  • 繼承 QDialog,支援作為獨立視窗或嵌入父視窗。
  • 建構子接收檔案名稱,內部建立 QFileInfo 取得檔案資訊。

建構子實作重點

  1. 建立 QTabWidget 並加入三個分頁:
    tabWidget = new QTabWidget;
    tabWidget->addTab(new GeneralTab(fileInfo), tr("General"));
    tabWidget->addTab(new PermissionsTab(fileInfo), tr("Permissions"));
    tabWidget->addTab(new ApplicationsTab(fileInfo), tr("Applications"));
    注意:分頁元件未指定父物件,因 addTab 會自動設為子物件。
  2. 建立按鈕盒並連接訊號:
    buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
    connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
    connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
  3. 使用 QVBoxLayout 垂直排版:分頁在上、按鈕在下。
  4. 設定視窗標題:setWindowTitle(tr("Tab Dialog"));

GeneralTab 實作細節

  • 繼承 QWidget,僅提供建構子。
  • 使用 QVBoxLayout 排列標籤與顯示元件:檔名、路徑、大小、最後讀取/修改時間。
  • 路徑、大小、時間等唯讀欄位使用 QLabel 並設定 QFrame::Panel | QFrame::Sunken 邊框風格。
  • 檔名欄位使用 QLineEdit 允許編輯。
  • 最後加入 addStretch(1) 讓內容靠頂對齊。

關鍵代碼片段

QLabel *pathLabel = new QLabel(tr("Path:"));
QLabel *pathValueLabel = new QLabel(fileInfo.absoluteFilePath());
pathValueLabel->setFrameStyle(QFrame::Panel | QFrame::Sunken);
// ... 類似處理 size, lastRead, lastMod

QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(fileNameLabel);
mainLayout->addWidget(fileNameEdit);
mainLayout->addWidget(pathLabel);
mainLayout->addWidget(pathValueLabel);
// ...
mainLayout->addStretch(1);
setLayout(mainLayout);

PermissionsTab 與 ApplicationsTab

結構與 GeneralTab 類似,分別顯示檔案權限資訊與關聯應用程式,此處略過重複代碼。

學習重點總結

  1. QTabWidget 是建構分頁介面的核心容器。
  2. 分頁內容建議封裝為獨立 QWidget 子類別,職責單一。
  3. QDialogButtonBox 提供跨平台一致的標準按鈕語意。
  4. 善用 tr() 支援多國語系。

本文翻譯整理自「阿潘的兔子」博客,原文出處:作者部落格 | 來源:Qt 官方範例 Tab Dialog

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved