2012-06-07 20 views
3

我想在QT中使用QToolButton的標準圖標,但我遇到了問題。我的代碼是:標準和「異國情調」的圖標

m_buttonZoomPlus->setIcon(QStyle::standardIcon(QStyle::SP_DesktopIcon)); 

我得到的錯誤信息:

不能調用成員函數 'QIcon將QStyle :: standardIcon(將QStyle :: StandardPixmap,常量QStyleOption *,常量QWidget的*)const的' 無物體

這是什麼意思?我是否必須創建一個空的QStyle對象並在其上調用standardIcon函數?

此外,我發現這裏的標準圖標的列表:http://doc.trolltech.com/main-snapshot/qstyle.html#StandardPixmap-enum

是這個名單詳盡的或有其他標準圖標?我正在尋找一個放大/縮小圖標的例子,我還沒有找到它。

非常感謝您的幫助。

+0

這聽起來像'將QStyle :: standardIcon'不是一個靜態成員函數,你必須做如下事情:'QStyle風格; style.standardIcon(QStyle :: SP_DesktopIcon);' – bames53

+0

@ bames53我已經做了以下(我使用QCommonStyle,因爲QStyle是抽象的):添加'QIcon m_icon; QCommonStyle m_style;'在我的類屬性中,像這樣初始化:'m_style(),m_icon(m_style.standardIcon(QStyle :: SP_DesktopIcon))',然後使用'm_buttonZoomPlus-> setIcon(m_icon)'。我現在可以看到這個圖標,但是當我盯着它時,程序崩潰了。 – Leo

回答

5

這意味着standardIcon不是一個靜態方法,所以你不能這樣稱呼它。您需要構建一個QStyle並進行適當的初始化,然後您可以使用該方法獲取特定的圖標。

編輯:傑里米是對的。如果你不改變風格或定義自己的風格,你可以簡單地使用如下:

QApplication::style()->standardIcon(QStyle::SP_DesktopIcon); 

參考:http://qt-project.org/doc/qt-4.8/qstyle.html#standardIcon

+0

我無法看到你的鏈接,因爲它被阻止,但我試圖初始化一個QCommonStyle並使用這個,但雖然我現在可以看到圖標,程序崩潰,我點擊它。請參閱最初發布的評論。任何想法我做錯了什麼? – Leo

+0

@Leo,因爲您現在可以看到圖標,您的問題得到了解答。點擊按鈕時的崩潰可能是完全不同且無關緊要的事情。 – bames53

+0

Qt文檔被阻止?哎喲。無論如何,如果您點擊它時崩潰,我們需要查看您連接到鼠標輸入的什麼槽以進行單擊,並收到錯誤以確定發生的原因。這將是一個新的問題,雖然可能... – AJG85