case 4:
{
QPushButton * statusBtn;
int status = index.model()->data(index,Qt::DisplayRole).toInt();
QStyleOptionButton pushButtonOption;
pushButtonOption.rect = QRect(option.rect.x(), option.rect.y()+((100 - 20)/2), 20,20);
pushButtonOption.state |= QStyle::State_Enabled;
pushButtonOption.direction = QApplication::layoutDirection();
switch (status)
{
case DOWNLOAD_START:
{
pushButtonOption.state |=QStyle::State_None;
pushButtonOption.icon = QIcon("play.png");
statusBtn = startDownloadStatusBtn;
break;
}
case DOWNLOAD_STOP:
{
pushButtonOption.state |=QStyle::State_None;
pushButtonOption.icon = QIcon("pause.png");
statusBtn = stopDownloadStatusBtn;
break;
}
case DOWNLOAD_START_HOVER:
{
pushButtonOption.state |= QStyle::State_MouseOver;
pushButtonOption.icon = QIcon("play_hover.png");
statusBtn = startDownloadStatusBtn;
break;
}
case DOWNLOAD_START_PRESSED:
{
pushButtonOption.state |= QStyle::State_Sunken;
pushButtonOption.icon = QIcon("play_hover.png");
statusBtn = startDownloadStatusBtn;
break;
}
case DOWNLOAD_STOP_HOVER:
{
pushButtonOption.state |= QStyle::State_MouseOver;
pushButtonOption.icon = QIcon("pause_hover.png");
statusBtn = stopDownloadStatusBtn;
break;
}
case DOWNLOAD_STOP_PRESSED:
{
pushButtonOption.state |= QStyle::State_Sunken;
pushButtonOption.icon = QIcon("pause_hover.png");
statusBtn = stopDownloadStatusBtn;
break;
}
default:
{
break;
}
}
pushButtonOption.iconSize = QSize(30, 30);
QApplication::style()->drawControl(QStyle::CE_PushButton, &pushButtonOption, painter, statusBtn);
break;
}QPaint QPushButton
最新推荐文章于 2024-04-07 21:27:50 发布
本文介绍了一种使用Qt库来根据不同下载状态动态绘制按钮的方法。通过切换图标和按钮状态来反映当前的下载任务状态,如开始、暂停及鼠标悬停效果等。
1788

被折叠的 条评论
为什么被折叠?



