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

Qt 學習之路 (7):建立尋找對話框 (上) — 從零手刻可執行的 QDialog 實作

     編輯:關於C語言

《C++ GUI Programming with Qt 4》原書以電子表格為貫穿範例,但程式碼分散各章、不易即時驗證成果。本系列採「單章單功能、即寫即跑」模式,本篇實作一個尋找對話框,涵蓋 QDialog、QAction、訊號/槽、前向宣告等核心概念。

最終成果預覽

一個含「查找內容」輸入框、「大小寫敏感」「向後搜尋」核取方塊、「查找」「關閉」按鈕的標準對話框。

尋找對話框成品

專案建立步驟

  1. Qt Creator → New Project → Qt Gui Application
  2. 專案名稱:FindDialog
  3. 基底類別選 QDialog(非預設 QMainWindow)
  4. 類別名稱:FindDialog,取消 Generate form(純手刻程式碼)

表頭檔 finddialog.h 完整解析

#ifndef FINDDIALOG_H
#define FINDDIALOG_H

#include <QtGui/QDialog>

// 前向宣告:僅使用指標,無需引入完整定義,加快編譯
class QCheckBox;
class QLabel;
class QLineEdit;
class QPushButton;

class FindDialog : public QDialog
{
    Q_OBJECT  // 必須:啟用訊號/槽機制的 MOC 處理

public:
    explicit FindDialog(QWidget *parent = 0);
    ~FindDialog();

signals:                    // 對外發射的訊號
    void findNext(const QString &str, Qt::CaseSensitivity cs);
    void findPrevious(const QString &str, Qt::CaseSensitivity cs);

private slots:              // 內部處理的槽函式
    void findClicked();
    void enableFindButton(const QString &text);

private:                    // UI 元件指標
    QLabel *label;
    QLineEdit *lineEdit;
    QCheckBox *caseCheckBox;
    QCheckBox *backwardCheckBox;
    QPushButton *findButton;
    QPushButton *closeButton;
};

#endif // FINDDIALOG_H

關鍵點筆記

語法用途備註
Q_OBJECT啟用 Qt 元物件系統含訊號/槽、屬性、執行時型別資訊的類別必加
前向宣告僅宣告類別存在減少標頭檔相依、加速編譯;.cpp 再 #include 完整定義
signals:定義可發射的訊號本質是 protected 虛函式,由 MOC 實作
slots:定義可接收訊號的槽可為 public/protected/private
Qt::CaseSensitivity大小寫敏感度列舉Qt::CaseSensitive / Qt::CaseInsensitive

下一步預告

下篇將完成 finddialog.cpp:建立 UI 佈局、連接訊號槽、實作 findClicked() 與 enableFindButton() 邏輯,並撰寫 main.cpp 啟動對話框。敬請期待!


本文整理自「豆子空間」博客,原文出處:https://devbean.blog.51cto.com/448512/198971

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