QSplashScreen *Application::buildSplashScreen() { const QPixmap logoPixmap(":/images/logo.png"); QDesktopWidget *desktop = QApplication::desktop(); QRect desktopRect = desktop->availableGeometry(); QPixmap splashPixmap(desktopRect.width(), desktopRect.height()); QPainter painter; painter.begin(&splashPixmap); QLinearGradient backgroundGradient( splashPixmap.rect().width() / 2, 0, splashPixmap.rect().width() / 2, splashPixmap.rect().height()); backgroundGradient.setColorAt(0, QColor::fromRgb(40, 50, 57)); backgroundGradient.setColorAt(1, QColor::fromRgb(19, 25, 29)); painter.fillRect(splashPixmap.rect(), backgroundGradient); QRect logoRect((splashPixmap.width() - logoPixmap.width()) / 2, (splashPixmap.height() - logoPixmap.height()) / 2, logoPixmap.width(), logoPixmap.height()); painter.drawPixmap(logoRect, logoPixmap); painter.end(); QScopedPointer<QSplashScreen> splashScreen(new QSplashScreen(splashPixmap)); if (desktopRect.width() > desktopRect.height()) { splashScreen->setAttribute(Qt::WA_LockLandscapeOrientation, true); } else { splashScreen->setAttribute(Qt::WA_LockPortraitOrientation, true); } return splashScreen.take(); }
void ControlSlider::paintEvent(QPaintEvent * /* event */) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); /* draw background */ QBrush brush(backgroundGradient()); painter.setBrush(brush); painter.setPen(Qt::NoPen); painter.drawPath(backgroundPath()); /* draw handle */ brush = handleGradient(); painter.setBrush(brush); painter.setPen(Qt::NoPen); painter.drawPath(handlePath()); }
void CustomViewStyle::drawPrimitive(PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const { //![0] switch (element) { case (PE_PanelItemViewItem): { painter->save(); QPoint topLeft = option->rect.topLeft(); QPoint bottomRight = option->rect.topRight(); QLinearGradient backgroundGradient(topLeft, bottomRight); backgroundGradient.setColorAt(0.0, QColor(Qt::yellow).lighter(190)); backgroundGradient.setColorAt(1.0, Qt::white); painter->fillRect(option->rect, QBrush(backgroundGradient)); painter->restore(); break; } default: QProxyStyle::drawPrimitive(element, option, painter, widget); } //![0] }
void NickListDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { // save painter->save(); QString strNicklistNickColor = Settings::instance()->get("nicklist_nick_color"); QString strNicklistSelectedNickColor = Settings::instance()->get("nicklist_selected_nick_color"); QString strNicklistBusyNickColor = Settings::instance()->get("nicklist_busy_nick_color"); QString strNicklistGradient1Color = Settings::instance()->get("nicklist_gradient_1_color"); QString strNicklistGradient2Color = Settings::instance()->get("nicklist_gradient_2_color"); QPen fontPen(QColor(strNicklistNickColor), 1, Qt::SolidLine); QPen selectedFontPen(QColor(strNicklistSelectedNickColor), 1, Qt::SolidLine); QPen busyPen(QColor(strNicklistBusyNickColor), 1, Qt::SolidLine); QColor cUserSexMale = QColor("#71A3FF"); QColor cUserSexFemale = QColor("#FF49BF"); QColor cUserSexUnknown = QColor("#999999"); QColor cGradient1 = QColor(strNicklistGradient1Color); QColor cGradient2 = QColor(strNicklistGradient2Color); int marginLeft = 3; int marginRight = 3; bool selected; if (option.state & QStyle::State_Selected) { QLinearGradient backgroundGradient(option.rect.left(), option.rect.top(), option.rect.left(), option.rect.bottom()); backgroundGradient.setColorAt(0.0, cGradient1); backgroundGradient.setColorAt(1.0, cGradient2); painter->fillRect(option.rect, QBrush(backgroundGradient)); painter->setPen(selectedFontPen); selected = true; } /* #ifndef Q_OS_WIN else if (option.state & QStyle::State_MouseOver) { painter->fillRect(option.rect, option.palette.highlight()); painter->setPen(selectedFontPen); selected = true; } #endif */ else { painter->setPen(fontPen); selected = false; } QString nick = index.data(Qt::DisplayRole).toString(); QString modes = index.data(NickListModesRole).toString(); QString userAvatar = index.data(NickListAvatarUrlRole).toString(); QChar userSex = index.data(NickListSexRole).toChar(); QString channel = index.data(NickListChannelRole).toString(); bool busy = false; bool statusIcons = true; QList<QIcon> icons; if (modes.contains(FLAG_BUSY)) { busy = true; } if ((modes.contains(FLAG_CAM_PRIV)) && (channel.at(0) == '^')) { icons << QIcon(":/images/privcam.png"); } if (modes.contains(FLAG_CAM_PUB)) { icons << QIcon(":/images/pubcam.png"); } if (modes.contains(FLAG_VOICE)) { icons << QIcon(":/images/voice.png"); } if (modes.contains(FLAG_SCREENER)) { icons << QIcon(":/images/screener.png"); } if (modes.contains(FLAG_MOD)) { icons << QIcon(":/images/mod.png"); } if (modes.contains(FLAG_HALFOP)) { icons << QIcon(":/images/halfop.png"); } if (modes.contains(FLAG_OP)) { icons << QIcon(":/images/op.png"); } if (modes.contains(FLAG_OWNER)) { icons << QIcon(":/images/owner.png"); } if (modes.contains(FLAG_DEV)) { icons << QIcon(":/images/dev.png"); } else if (modes.contains(FLAG_BOT)) { icons << QIcon(":/images/bot.png"); } else if (modes.contains(FLAG_ADMIN)) { icons << QIcon(":/images/admin.png"); } // avatar if (Themes::instance()->isCurrentWithNicklistAvatar()) { // is valid avatar if (userAvatar.isEmpty()) { if (nick.at(0) == '~') userAvatar = Avatar::instance()->getEmptyUnregisteredUserAvatar(); else userAvatar = Avatar::instance()->getEmptyRegisteredUserAvatar(); } else userAvatar = Avatar::instance()->getAvatarPath(userAvatar); QIcon avatar(userAvatar); int x = option.rect.left(); int y = option.rect.top(); int w = 35; int h = 35; avatar.paint(painter, x, y, w, h); } // sex if ((nick.at(0) != '~') && (Themes::instance()->isCurrentWithNicklistAvatar())) { if (userSex == USER_SEX_MALE || userSex == USER_SEX_FEMALE) { QColor cSexColor; if (userSex == USER_SEX_MALE) cSexColor = cUserSexMale; else if (userSex == USER_SEX_FEMALE) cSexColor = cUserSexFemale; else cSexColor = cUserSexUnknown; QRect rect = option.rect; int x = rect.x()+35+2; int y = rect.top()+1; int w = 2; int h = 35-2; painter->fillRect(x, y, w, h, cSexColor); } } // nick if (Themes::instance()->isCurrentWithNicklistAvatar()) { QRect rect = option.rect; // with avatars if ((busy) && (!selected)) painter->setPen(busyPen); // gray QFont font = option.font; font.setWeight(busy ? QFont::Light : QFont::Normal); font.setItalic(busy ? true : false); painter->setFont(font); if (nick.at(0) != '~') rect.setX(rect.x()+35+5+5); else rect.setX(rect.x()+35+5); painter->drawText(rect, Qt::AlignVCenter | Qt::AlignLeft, nick); } else { QRect rect = option.rect; rect.setX(rect.x() + marginLeft); // without avatars if ((busy) && (!selected)) painter->setPen(busyPen); // gray QFont font = option.font; font.setWeight(busy ? QFont::Light : QFont::Normal); font.setItalic(busy ? true : false); painter->setFont(font); painter->drawText(rect, Qt::AlignVCenter | Qt::AlignLeft, nick); } // status icons if (statusIcons) { QRect rect = option.rect; rect.setX(rect.right() - marginRight); foreach (const QIcon &icon, icons) { rect.setX(rect.x() - 16); icon.paint(painter, rect, Qt::AlignVCenter | Qt::AlignAbsolute, QIcon::Normal, QIcon::On); } }