翻譯|使用教程|編輯:龔雪|2024-03-20 11:13:00.957|閱讀 117 次
概述:本文將為大家介紹如何使用Qt Widget小部件創建文檔查看器,歡迎下載最新版組件體驗~
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Qt 是目前最先進、最完整的跨平臺C++開發工具。它不僅完全實現了一次編寫,所有平臺無差別運行,更提供了幾乎所有開發過程中需要用到的工具。如今,Qt已被運用于超過70個行業、數千家企業,支持數百萬設備及應用。
文檔查看器是一個顯示和打印JSON、文本和PDF文件的Widgets應用程序。Document Viewer(文檔查看器)演示了如何使用帶有靜態和動態工具欄、菜單和操作的QMainWindow,此外它還演示了基于小部件的應用程序中的以下特性:
在上文中(點擊這里回顧>>)主要介紹了創建一個應用程序和主窗口的一些類,本文將繼續介紹一些其他類,請持續關注哦~
Qt技術交流群:166830288 歡迎一起進群討論
HoverWatcher類
HoverWatcher類在將鼠標懸停在小部件上時設置覆蓋光標,并在離開時恢復它。為了防止為同一個小部件創建多個HoverWatcher實例,它被實現為每個小部件單個實例。
HoverWatcher繼承自,并將它所監視的QWidget作為實例的父對象。它安裝了一個事件過濾器來攔截懸停事件而不消耗它們:
HoverWatcher::HoverWatcher(QWidget *watched) : QObject(watched), m_watched(watched) { Q_ASSERT(watched); m_cursorShapes[Entered].emplace(Qt::OpenHandCursor); m_cursorShapes[MousePress].emplace(Qt::ClosedHandCursor); m_cursorShapes[MouseRelease].emplace(Qt::OpenHandCursor); // no default for Left => restore override cursor m_watched->installEventFilter(this); } HoverAction枚舉列出了HoverWatcher響應的動作: enum HoverAction { Entered, MousePress, MouseRelease, Left, Ignore };
靜態函數創建監視器,為特定的QWidget檢查它們是否存在,或者解散監視器:
static HoverWatcher *watcher(QWidget *watched); static const HoverWatcher *watcher(const QWidget *watched); static bool hasWatcher(QWidget *widget); static void dismiss(QWidget *watched);
可以為每個HoverAction設置或取消光標形狀,如果沒有關聯的游標形狀,則在觸發操作時恢復應用程序的覆蓋游標。
public slots: void setCursorShape(HoverAction type, Qt::CursorShape shape); void unSetCursorShape(HoverAction type);
mouseButtons屬性保存了用于MousePress操作的鼠標按鈕:
void setMouseButtons(Qt::MouseButtons buttons); void setMouseButton(Qt::MouseButton button, bool enable);
特定于動作的信號在處理一個動作后發出:
signals: void entered(); void mousePressed(); void mouseReleased(); void left();
發出一個通用信號,將處理后的動作作為參數傳遞:
void hoverAction(HoverAction action);
RecentFiles類
RecentFiles是一個 ,專門用于管理最近打開的文件列表。
RecentFiles有插槽添加單個文件或多個文件,如果路徑指向存在且可以打開的文件,則將一個條目添加到最近的文件列表中。如果一個文件已經在列表中,它將從其原始位置移除并添加到頂部。
public slots: void addFile(const QString &fileName) { addFile(fileName, EmitPolicy::EmitWhenChanged); } void addFiles(const QStringList &fileNames);
文件通過名稱或索引從列表中刪除:
void removeFile(const QString &fileName) { removeFile(m_files.indexOf(fileName)); } void removeFile(qsizetype index) {removeFile(index, RemoveReason::Other); }
插槽實現保存和恢復從QSettings:
void saveSettings(QSettings &settings, const QString &key) const; bool restoreFromSettings(QSettings &settings, const QString &key);
在恢復設置時,不存在的文件將被忽略。maxFiles屬性保存要存儲的最近文件的最大數量(默認為10)。
qsizetype maxFiles(); void setMaxFiles(qsizetype maxFiles);
RecentFiles在接受一個文件之前驗證它是否可以被讀取。
RecentFileMenu類
RecentFileMenu是一個,專門用于將RecentFiles對象顯示為子菜單。
它的構造函數接受一個指向父QObject的指針和一個指向RecentFiles對象的指針,該對象的內容將被可視化。它的fileOpened()信號,當用戶從列表中選擇一個最近的文件時觸發,將絕對路徑作為參數傳遞給該文件。
注意:RecentFileMenu要么被它的父部件銷毀,要么被傳遞給它的構造函數的RecentFiles對象銷毀。
class RecentFileMenu : public QMenu { Q_OBJECT public: explicit RecentFileMenu(QWidget *parent, RecentFiles *recent); signals: void fileOpened(const QString &fileName); ... };
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網