• 17109阅读
  • 6回复

QIcon的用法,困惑 [复制链接]

上一主题 下一主题
离线marslee_suc
 
只看楼主 倒序阅读 楼主  发表于: 2008-11-19
— 本帖被 XChinux 执行加亮操作(2008-11-30) —
我在一个程序中使用QIcon,我想让鼠标点击的时候现实一个不同的图片使用了addpixmap()这个函数,但是发现没有效果不论我怎么点击都是初始化的时候的图片,但是看addpixmap这个函数好像就是干这个的,困惑。
大家都是怎么使用QIcon让它在不同的state显示不同的图片的呢?
谢谢了
离线vrcats
只看该作者 1楼 发表于: 2008-11-20
QIcon本身只是一个容器,可以乘放各种状态下的图片。具体显示哪个图片是使用它的控件决定的,比如一个QPushButton,会根据自己不同的状态从QIcon里取得不同的图片显示出来:

void MyWidget::drawIcon(QPainter *painter, QPoint pos)
{
    QPixmap pixmap = icon.pixmap(QSize(22, 22),
                                    isEnabled() ? QIcon::Normal
                                                : QIcon::Disabled,
                                    isOn() ? QIcon::On
                                          : QIcon::Off);
    painter->drawPixmap(pos, pixmap);
}
离线lazybone
只看该作者 2楼 发表于: 2008-11-20
icon.addPixmap(new QPixmap("a.png"));
这句改Icon图片
离线marslee_suc
只看该作者 3楼 发表于: 2008-11-25
楼上的意思是不是不能使用png呢?
我的代码像下面的样子,但是不能正常工作。
#include <QtGui>
#include <QApplication>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QPushButton *tempButton = new QPushButton(QString("haha"));
    QIcon *tempIcon = new QIcon;
    tempIcon -> addPixmap(QString("active.png"),QIcon::Active);
    tempIcon -> addPixmap(QString("normal.png"),QIcon::Normal);
    tempButton -> setIcon(*tempIcon);
    tempButton->show();
    return app.exec();
}
离线lazybone
只看该作者 4楼 发表于: 2008-11-26
不能显示Icon ,还是QIcon::Active和Normal效果一样?
mode 换成 disabled 试试 效果明显
离线marslee_suc
只看该作者 5楼 发表于: 2008-11-30
是这样的。在normal状态显示了一个图片,然后点击button后变成了另一个,但是点击结束以后变不回原来那个了,以后不论怎么点击都是第2个图片了,不会自己回normal状态的图片
只看该作者 6楼 发表于: 2011-04-14
QIcon icon0;
    icon0.addPixmap(QPixmap("E:/procedure/phone_final/images/3-1-1.png"),QIcon::Active,QIcon::On);
    icon0.addPixmap(QPixmap("E:/procedure/phone_final/images/3-1.png"),QIcon::Normal,QIcon::Off);
    ui->tabWidget->setTabIcon(0,icon0);
    ui->tabWidget->setIconSize(QSize(58,71));
快速回复
限100 字节
 
上一个 下一个