2013-09-01 55 views
0

我從QFontDialog(添加了新SLOT)創建了我自己的字體對話框。之後,我無法將圖標(* .png)設置爲新的字體對話框(使用func。setWindowIcon)。如果我使用setWindowIcon默認的QFontDialog - 一切正常。那麼,如何將圖標設置爲我的新字體對話框?將圖標設置爲自定義QFontDialog

FontDialog.h

#include <QtGui> 
#include <QtCore> 

class FontDialog: public QFontDialog { 
    public: 
     FontDialog(); 
     ~FontDialog(); 
    public slots: 
     void someSlot(void); 
}; 

FontDialog.cpp

#include "FontDialog.h" 

FontDialog::FontDialog() { 
} 

FontDialog::~FontDialog() { 
} 

void someSlot(void) { 
} 

的main.cpp

#include "FontDialog.h" 

int main(int argc, char *argv[]) { 
    QApplication app(argc, argv); 

    FontDialog *fontDialog = new FontDialog(); 
    fontDialog->setWindowIcon(QIcon(".//icon.png")); // !!!NOT WORKING!!! for custom QFontDialog 
    fontDialog->show(); 

    app.exec(); 
} 

我使用Qt 4.8.5使用Qt Designer 2.7.1環境。

感謝您的任何幫助。

+0

發佈的代碼爲您QFontDialog子會讓你更容易看到任何可能導致你的問題的錯誤 –

+0

另外,你使用的是哪個版本的Qt? – 2013-09-01 23:49:33

+0

你確定圖標文件的路徑是否正確? – erelender

回答

0

以下作品的Qt 4.8.4下的OS X和Windows 7中它也適用於5.1.1在Windows上,但不能在OS X :(

#include <QFontDialog> 
#include <QApplication> 
#include <QIcon> 
#include <QPainter> 

class Dialog : public QFontDialog { 
public: 
    Dialog(QWidget *parent = 0) : QFontDialog(parent) {} 
    Dialog(const QFont & initial, QWidget *parent = 0) : QFontDialog(initial, parent) {} 
}; 

QIcon myIcon(const QColor & color) 
{ 
    QIcon icon; 
    QPixmap pm(128, 128); 
    pm.fill(Qt::transparent); 
    QPainter p(&pm); 
    p.translate(64, 64); 
    p.scale(50, 50); 
    p.setBrush(color); 
    p.setPen(QPen(Qt::lightGray, 0.1)); 
    p.drawEllipse(-1, -1, 2, 2); 
    icon.addPixmap(pm); 
    return icon; 
} 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    a.setWindowIcon(myIcon(Qt::red)); 
    Dialog d; 
    d.setWindowIcon(myIcon(Qt::blue)); 
    d.show(); 
    return a.exec(); 
} 
+0

非常有趣,問題出在FontDialog類的構造函數中。謝謝解決! – Skroopa

相關問題