2010-06-05 107 views
1

我打算編寫一個使用QT4的應用程序(使用C++或python,它在那個時候並不重要)。 其中一項功能是「顯示數據庫中的所有項目」。QT4,分頁顯示元素

一個項目都有一個標題,作者,描述和圖片(大小不變)

而且可能有很多的項目。假設400.一次沒有足夠的空間來展示他們。 一行將有200px,所以我最多需要4次一次。

如何分頁?我不知道。 我可以在SQL查詢中使用限制和偏移量,但是如何告訴窗口:「這是第5頁」?

任何解決方案?

回答

1

首先,你正常不希望在任何GUI應用程序中使用任何手動設置的像素寬度,如果你這樣做,你的工具包很糟糕(或者你必須在遊戲開發中工作)。

第二關:更具體。

您需要爲您的應用程序定義「頁面」,即頁面應該在其上下文中。我假設它將一個項目列表分成不同的頁面。通常這是通過使用其中一個視圖類(例如QListView或QTableView)來完成大部分的工作:它被稱爲滾動條(更不用說文件管理器中的摺疊文件夾概念)。另一種方法是將信息分成幾個標籤頁(QTabWidget),每個頁面顯示某種類型的視圖(可能是QTextView或M/V或Item視圖類之一)。

同樣的事情也可以使用您自己的小部件堆棧和一些其他小部件來操作當前顯示的頁面。這基本上是TeamSpeak 3客戶端和大多數KDE應用程序中的選項對話框的工作原理;這也是向後/向後按鈕嚮導的工作原理。我建議你看看這個config dialog example

通常你想要的是一個帶有滾動條的視圖或者某種形式的摺疊相關條目到分類信息中。如果您只想顯示其中每個頁面爲X條目的頁面列表:請使用tab widgetstacked widget

+0

我指定200px來告訴我們不可能一次擁有所有項目。我會檢查標籤小部件和堆疊小部件。 – matiit 2010-06-05 14:25:33

+0

好吧,我讀過。但我將不得不創建動態數量的頁面。不會有一個頁面,我將不得不創建所有頁面,並通過qstackedwidget只顯示一個頁面。我理解它好嗎? – matiit 2010-06-05 14:43:22

+0

我不知道,如果我理解你的評論好大聲笑。您可以動態地添加/刪除任何數量的頁面到QStackedWidget,直到內存耗盡。如果您對提前需要多少頁面有所瞭解,則可以在爲它們填充數據之前爲堆疊小工具預先分配頁面。 (例如條目數量/頁面數量=要構建的頁面數量)。 你沒有多說關於應用程序的細節,所以我不能說得很具體。 – TerryP 2010-06-05 16:47:44