2013-09-01 57 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

相关问题