2009-10-05 187 views
25

製作自定義窗口小部件(使用Qt)後面的過程看起來不好......醜陋?創建「漂亮」的Qt自定義窗口小部件

我知道這是相當瑣碎,做一個「自定義窗口小部件」有說,一個列表框和拼湊成一個按鈕,但我會怎樣做一些看起來更像是這樣的:

QAnalogWidgets

我做了一些基本上使用PNG背景(我在Photoshop中製作)的基本元素(如QLabel放置在它們上面)的粗略實物模型,但我不認爲這是我應該如何做的。我知道Qt支持CSS - 這是人們用來創建實際看起來不錯的小部件嗎?我是否需要在paintEvent方法中工作? OpenGL的?

試圖尋找任何「自定義小部件qt」相關的東西只是給我噸如何將它們導入到設計器等信息 - 所以任何線索將不勝感激。

謝謝!

回答

28

有三個基本不同的東西去嘗試,在列出的順序:

  1. CSS/stylesheets。如果足夠強大以滿足您的需求,樣式表非常好,並允許運行時樣式更改。請參閱stylesheet examples
  2. Custom painting。您可以使用自定義繪畫幾乎做任何事情。 Qt對PNG和SVG的支持應該會有很大的幫助。你會想看看painting examples。另外,請看QStyle文檔以瞭解您應考慮哪些類型的信息。
  3. Custom styles。如果您需要自定義整個應用程序,則最好創建自己的樣式。不是因爲心靈的隱隱。

基本上,請選擇適合您的最簡單的解決方案。另外,看看Qt Creator,它的風格很好,並且所有source code都可用。

+0

謝謝,我已經在Java Swing中做了一些自定義繪畫,所以我會給出一個透視圖 – swanson 2009-10-05 22:52:29

10

這裏是一個教程,通過刪除系統頂部欄和繪製空格創建自定義窗口:http://qt.developpez.com/tutoriels/braindeadbzh/customwindow/

由於他是一個QWidget的子類,你可以對所有的QWidget子類(比如QPushButton)做這件事。

當你想在QTDesigner中使用它們時,只需包含你的類,然後將一個「經典」小部件提供給你的自定義小部件。這可能是有益的:http://pepper.troll.no/s60prereleases/doc/designer-using-custom-widgets.html.

+3

謝謝,這看起來很有前途......如果只有我說法語:D 但代碼是英文的,所以我會檢查出來! – swanson 2009-10-05 22:51:42

+0

對不起法語...我知道這個教程存在英文(因爲它是一個翻譯),但我只收藏法文。 – 2009-10-05 22:58:18