Qt 内置 Icon
在 Qt 中,内置了许多图标,我们在设计应用程序时,可以使用这些图标。
有哪些图标
使用标准图标的好处是,应用风格与当前系统相统一。
我们可以遍历这些图标,以便日后方便使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| auto layout = new QGridLayout();
QMetaEnum sp = QMetaEnum::fromType<QStyle::StandardPixmap>(); auto style = QApplication::style();
int colNum = 4; int count = sp.keyCount(); for (int i = 0; i < count; i++) { auto iconName = sp.key(i); auto pixmap = (QStyle::StandardPixmap) i; auto icon = style->standardIcon(pixmap);
auto button = new QPushButton(icon, QString::asprintf("%02d - %s", i, iconName)); button->setStyleSheet("QPushButton{text-align : left;}"); layout->addWidget(button, i / colNum, i % colNum); }
this->setLayout(layout);
this->setWindowTitle("Qt 内置图标");
|
我使用的是macOS系统,Qt版本为5.15,一共有79个图标,效果如下:
在高分辨率屏幕上,图标可能显示模糊,此时可以加上这句代码:
1
| QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
|
如何使用内置图标
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| QStyle *qstyle = QApplication::style();
QStyle::StandardPixmap qtIcon = QStyle::SP_TitleBarMenuButton;
QIcon icon = qstyle->standardIcon(qtIcon);
QPushButton *iconBtn = new QPushButton; iconBtn->setIcon(icon);
QPixmap pix = qstyle->standardPixmap(qtIcon);
QLabel *iconLable = new QLabel; iconLable->setPixmap(pix);
|