将图标设置为自定义QFontDialog

时间:2013-09-01 16:16:59

标签: c++ qt

我从QFontDialog创建了自己的字体对话框(添加了新的SLOT)。之后,我无法将icon(* .png)设置为我的新字体对话框(使用func.setWindowIcon)。如果我使用setWindowIcon来默认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环境。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

以下在OS X和Windows 7的Qt 4.8.4下工作。它也适用于Windows上的5.1.1,但不适用于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();
}