我發展我自己的MessageBox像素圖,因爲我需要的功能:這是不是標準的消息框支持我在哪裏可以找到Qt的消息框圖標
Do not display this message next time
。不過,我想盡可能地將它看作原始消息框。因此,我想重複使用顯示消息框時可以找到的相同圖標集。
有什麼辦法來檢索這個pixmap,以便我可以使用它嗎?喜歡的東西:
this->ui->icon->setPixmap(QMessageBox::questionPixmap);
我發展我自己的MessageBox像素圖,因爲我需要的功能:這是不是標準的消息框支持我在哪裏可以找到Qt的消息框圖標
Do not display this message next time
。不過,我想盡可能地將它看作原始消息框。因此,我想重複使用顯示消息框時可以找到的相同圖標集。
有什麼辦法來檢索這個pixmap,以便我可以使用它嗎?喜歡的東西:
this->ui->icon->setPixmap(QMessageBox::questionPixmap);
嘗試QStyle::standardIcon
與QStyle::SP_MessageBoxQuestion
。
您可以從當前QWidget
或QApplication
獲取樣式。
這似乎工作:
這是獲取像素圖的消息框的原始源代碼(內部Qt的實現):
QPixmap QMessageBoxPrivate::standardIcon(QMessageBox::Icon icon, QMessageBox *mb)
{
QStyle *style = mb ? mb->style() : QApplication::style();
int iconSize = style->pixelMetric(QStyle::PM_MessageBoxIconSize, 0, mb);
QIcon tmpIcon;
switch (icon) {
case QMessageBox::Information:
tmpIcon = style->standardIcon(QStyle::SP_MessageBoxInformation, 0, mb);
break;
case QMessageBox::Warning:
tmpIcon = style->standardIcon(QStyle::SP_MessageBoxWarning, 0, mb);
break;
case QMessageBox::Critical:
tmpIcon = style->standardIcon(QStyle::SP_MessageBoxCritical, 0, mb);
break;
case QMessageBox::Question:
tmpIcon = style->standardIcon(QStyle::SP_MessageBoxQuestion, 0, mb);
default:
break;
}
if (!tmpIcon.isNull())
return tmpIcon.pixmap(iconSize, iconSize);
return QPixmap();
}
創建一個類似的功能提供了一種方法來獲得像素圖適用於所有這些消息框樣式。
來源:http://www.qtcentre.org/threads/37395-Getting-the-Icon-of-a-MessageBox