0

我从 QFontDialog 创建了自己的字体对话框(添加了新的 SLOT)。之后,我无法将图标 (*.png) 设置为我的新字体对话框(使用 func.setWindowIcon)。如果我使用 setWindowIcon 来默认 QFontDialog - 一切都很好。那么,如何为我的新字体对话框设置图标?

字体对话框.h

#include <QtGui>
#include <QtCore>

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

字体对话框.cpp

#include "FontDialog.h"

FontDialog::FontDialog() {
}

FontDialog::~FontDialog() {
}

void someSlot(void) {
}

主文件

#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 Designer 2.7.1 环境中使用 Qt 4.8.5。

谢谢你的帮助。

4

1 回答 1

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();
}
于 2013-09-02T17:35:27.187 回答