本文整理汇总了C++中QSize::height方法的典型用法代码示例。如果您正苦于以下问题:C++ QSize::height方法的具体用法?C++ QSize::height怎么用?C++ QSize::height使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QSize
的用法示例。
在下文中一共展示了QSize::height方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: resizeEvent
void TopBar::resizeEvent(QGraphicsSceneResizeEvent* /*event*/)
{
//Check orientation
QString topbarName;
QSize mainViewSize = m_mainView->size();
int rotationAngle = static_cast<MainView*>(m_mainView)->rotationAngle();
if(rotationAngle == 90 || rotationAngle == 270 ) {
int wd = mainViewSize.width();
int ht = mainViewSize.height();
mainViewSize.setWidth(ht);
mainViewSize.setHeight(wd);
}
bool m_orientationChanged = false;
if(mainViewSize.height() >= mainViewSize.width()) {
if(m_orientation == TopBar::Landscape)
m_orientationChanged = true;
m_orientation = TopBar::Portrait;
topbarName = "topbar.svg";
}
else {
if(m_orientation == TopBar::Portrait)
m_orientationChanged = true;
m_orientation = TopBar::Landscape;
topbarName = "topbar_horisontal.svg";
}
//Calculate new size, resize by height, don't make it wider than the screen
QHash<QString, QSize>sizes = (Theme::p()->theme() == Theme::Blue) ?
m_sizesBlue : m_sizesLime;
//Get current size for topbarpixmap
QSize currentSize = !m_topBarPixmap.isNull() && !m_orientationChanged ?
m_topBarPixmap.size() : sizes[topbarName];
QSize newSize = !m_orientationChanged ? QSize(currentSize) : sizes[topbarName];
//Scale according to aspect ratio
newSize.scale(size().toSize(), Qt::KeepAspectRatio);
//fix width to window widht if previous scaling produced too narrow image
if(newSize.width() < size().width()) {
newSize.scale(size().toSize(), Qt::KeepAspectRatioByExpanding);
}
//Calculate scaling factor for rest of the graphics scaling
qreal scaleFactor = (newSize.width() *1.0) / (currentSize.width() * 1.0);
//Scale graphics, if the scalefactor applies
//This is really heavy since the SVG graphics are read again from the resource
if(scaleFactor != 1 || m_topBarPixmap.isNull() ) {
m_topBarPixmap = Theme::p()->pixmap(topbarName, newSize );
m_topBarUserIcon = Theme::p()->pixmap("user_default_icon.svg",
!m_topBarUserIcon.isNull() && !m_orientationChanged ? m_topBarUserIcon.size()* scaleFactor : sizes["user_default_icon.svg"] * scaleFactor);
m_topBarUserStatus = Theme::p()->pixmap("user_status_online.svg",
!m_topBarUserStatus.isNull() && !m_orientationChanged ? m_topBarUserStatus.size() * scaleFactor : sizes["user_status_online.svg"] * scaleFactor);
m_topBarStatusBarLeft = Theme::p()->pixmap("status_field_left.svg",
!m_topBarStatusBarLeft.isNull() && !m_orientationChanged ? m_topBarStatusBarLeft.size()* scaleFactor : sizes["status_field_left.svg"] * scaleFactor);
m_topBarStatusBarRight = Theme::p()->pixmap("status_field_right.svg",
!m_topBarStatusBarRight.isNull() && !m_orientationChanged ? m_topBarStatusBarRight.size()* scaleFactor : sizes["status_field_right.svg"] * scaleFactor);
m_topBarStatusBarMiddle = Theme::p()->pixmap("status_field_middle.svg",
!m_topBarStatusBarMiddle.isNull() && !m_orientationChanged ? m_topBarStatusBarMiddle.size() * scaleFactor : QSize(185, sizes["status_field_middle.svg"].height()) * scaleFactor);
//Update the sizeHint to match the size of the scaled m_topBarPixmap
updateGeometry();
//Point Update - Positions relative to the Top Bar "Backgroud" size.
//TODO: consider some layout instead of calculating relative locations
QSize topBarPixmapSize = m_topBarPixmap.size();
QSize topBarUserIconSize = m_topBarUserIcon.size();
QSize topBarUserStatusSize = m_topBarUserStatus.size();
QSize topBarStatusBarLeftSize = m_topBarStatusBarLeft.size();
QSize topBarStatusBarMiddleSize = m_topBarStatusBarMiddle.size();
//Location for Title text 5% width, 35% height of the background pixmap
m_topBarTitlePoint = QPoint(topBarPixmapSize.width()* 0.05,
topBarPixmapSize.height() * 0.35);
//User Icon location
//Placing 70% of the width and 10% of the height of the top bar background
m_topBarUserIconPoint = QPoint((topBarPixmapSize.width() * 0.7), (topBarPixmapSize.height() * 0.1));
//If Blue theme is in use - position user status icon on the right side of the user icon
if(!m_isLimeTheme) {
//Place the status icon on top of the right edge of the user icon, lower it by 35% of the height of the user icon
m_topBarUserStatusPoint = QPoint( ( (m_topBarUserIconPoint.x()+topBarUserIconSize.width() ) -
( topBarUserStatusSize.width()/2 )),
(m_topBarUserIconPoint.y() + (topBarUserIconSize.height() * 0.35 )));
}
//If Lime theme is in use - position user status icon on the left side of the user icon
else {
//Place the status icon on top of the left side of the user icon, lower it by 50% of the height of the user icon
//and move left by 5% of the icon
m_topBarUserStatusPoint = QPoint( m_topBarUserIconPoint.x() + ( topBarUserIconSize.width() * 0.05),
(m_topBarUserIconPoint.y() + (topBarUserIconSize.height() * 0.5 )));
}
//Status bar
//.........这里部分代码省略.........
示例2: PrettySize
QString PrettySize(const QSize& size) {
return QString::number(size.width()) + "x" + QString::number(size.height());
}
示例3: paintEvent
//-----------------------------------------------------------------------------
void ctkAxesWidget::paintEvent(QPaintEvent *)
{
Q_D(ctkAxesWidget);
// init
QPainter painter(this);
//painter.setRenderHint(QPainter::Antialiasing);
QPoint center = QPoint(this->width(), this->height()) / 2;
int length = qMin(this->width(), this->height());
int diameter = length / goldenRatio;
int radius = diameter / 2;
QStringList axesLabels;
QList<QPoint> positions = d->extremities(center, radius);
QFontMetrics fm = this->fontMetrics();
QSize letterSize = fm.size(Qt::TextShowMnemonic, "X") + QSize(1,1);
QSize halfLetterSize = letterSize / 2;
int blankSize = (length - diameter) / 2;
QSize betweenLetterSpace = QSize(blankSize - letterSize.width(), blankSize - letterSize.height()) / 2;
QList<QRect> labelRects = d->labelRects(positions, betweenLetterSpace);
for (int i = 0; i < 6; ++i)
{
//QRect rect(positions[i] + QPoint(cos(d->AxesAngles[i]) * (betweenLetterSpace.width()+halfLetterSize.width()),
// -sin(d->AxesAngles[i]) * (betweenLetterSpace.height()+halfLetterSize.height()))
// - QPoint(halfLetterSize.width(), halfLetterSize.height()), letterSize);
QRect rect = labelRects[i];
//if (d->HighlightAxes)
{
QFont font = painter.font();
font.setBold(d->HighlightAxis == (i + 1));
painter.setFont(font);
}
painter.drawText(rect, Qt::AlignCenter, d->AxesLabels[i]);
}
// Drawing the lines
for (int i = 0; i < 6; ++i)
{
//if (d->HighlightAxes)
{
QPen pen;
if (d->HighlightAxis == (i + 1)) // axes start at 1
{
pen.setWidth(3);
//pen.setColor(QColor(64, 64, 72)); // Payne's grey
pen.setColor(this->palette().color(QPalette::Highlight));
}
painter.setPen(pen);
}
painter.drawLine(center, positions[i]);
}
QSize sphereRadius((blankSize / 2) / 1.6180339887,
(blankSize / 2) / 1.6180339887);
// Draw the center sphere
QRadialGradient rg(QPointF(0.3333, 0.3333),0.7);
rg.setCoordinateMode(QGradient::ObjectBoundingMode);
if (//d->HighlightAxes &&
d->HighlightAxis == ctkAxesWidget::None)
{
rg.setColorAt(0., this->palette().color(QPalette::Highlight));
}
else
{
rg.setColorAt(0., this->palette().color(QPalette::Light));
}
rg.setColorAt(1., QColor(64, 64, 72));
painter.setBrush(QBrush(rg));
painter.setPen(QPen(Qt::NoPen));
painter.drawEllipse(QPointF(center), sphereRadius.width(), sphereRadius.height());
}
示例4: QDialog
//.........这里部分代码省略.........
m_pLineC= new QComboBox();
m_pLineC->setEditable(true);
m_pLineC->insertItems( 0, m_pOptions->m_recentCFiles );
m_pLineC->setEditText( KUrl(n3).prettyUrl() );
m_pLineC->setMinimumWidth( 200 );
button = new QPushButton( i18n("File..."), this );
connect( button, SIGNAL(clicked()), this, SLOT( selectFileC() ) );
button2 = new QPushButton( i18n("Dir..."), this );
connect( button2, SIGNAL(clicked()), this, SLOT( selectDirC() ) );
connect( m_pLineC, SIGNAL(editTextChanged(const QString&)), this, SLOT(inputFilenameChanged() ) );
h->addWidget( label, 2, 0 );
h->addWidget( m_pLineC, 2, 1 );
h->addWidget( button, 2, 2 );
h->addWidget( button2, 2, 3 );
m_pMerge = new QCheckBox( i18n("Merge"), this );
h->addWidget( m_pMerge, 3, 0 );
QHBoxLayout* hl = new QHBoxLayout();
h->addLayout( hl, 3, 1 );
hl->addStretch(2);
button = new QPushButton(i18n("Swap/Copy Names ..."), this);
//button->setToggleButton(false);
hl->addWidget( button );
QMenu* m = new QMenu(this);
m->addAction( i18n("Swap %1<->%2", QString("A"),QString("B") ));
m->addAction( i18n("Swap %1<->%2",QString("B"),QString("C") ));
m->addAction( i18n("Swap %1<->%2",QString("C"),QString("A") ));
m->addAction( i18n("Copy %1->Output",QString("A") ));
m->addAction( i18n("Copy %1->Output",QString("B") ));
m->addAction( i18n("Copy %1->Output",QString("C") ));
m->addAction( i18n("Swap %1<->Output",QString("A") ));
m->addAction( i18n("Swap %1<->Output",QString("B") ));
m->addAction( i18n("Swap %1<->Output",QString("C") ));
connect( m, SIGNAL(triggered(QAction*)), this, SLOT(slotSwapCopyNames(QAction*)));
button->setMenu(m);
hl->addStretch(2);
label = new QLabel( i18n("Output (optional):"), this );
m_pLineOut = new QComboBox();
m_pLineOut->setEditable(true);
m_pLineOut->insertItems( 0, m_pOptions->m_recentOutputFiles );
m_pLineOut->setEditText( KUrl(outputName).prettyUrl() );
m_pLineOut->setMinimumWidth( 200 );
button = new QPushButton( i18n("File..."), this );
connect( button, SIGNAL(clicked()), this, SLOT( selectOutputName() ) );
button2 = new QPushButton( i18n("Dir..."), this );
connect( button2, SIGNAL(clicked()), this, SLOT( selectOutputDir() ) );
connect( m_pMerge, SIGNAL(stateChanged(int)), this, SLOT(internalSlot(int)) );
connect( this, SIGNAL(internalSignal(bool)), m_pLineOut, SLOT(setEnabled(bool)) );
connect( this, SIGNAL(internalSignal(bool)), button, SLOT(setEnabled(bool)) );
connect( this, SIGNAL(internalSignal(bool)), button2, SLOT(setEnabled(bool)) );
m_pMerge->setChecked( !bMerge );
m_pMerge->setChecked( bMerge );
// m_pLineOutput->setEnabled( bMerge );
// button->setEnabled( bMerge );
h->addWidget( label, 4, 0 );
h->addWidget( m_pLineOut, 4, 1 );
h->addWidget( button, 4, 2 );
h->addWidget( button2, 4, 3 );
h->addItem(new QSpacerItem(200, 0), 0, 1);
QHBoxLayout* l = new QHBoxLayout();
v->addLayout( l );
l->setSpacing(5);
button = new QPushButton( i18n("Configure..."), this );
connect( button, SIGNAL(clicked()), pParent, slotConfigure );
l->addWidget( button, 1 );
l->addStretch(1);
button = new QPushButton( i18n("&OK"), this );
button->setDefault( true );
connect( button, SIGNAL(clicked()), this, SLOT( accept() ) );
l->addWidget( button, 1 );
button = new QPushButton( i18n("&Cancel"), this );
connect( button, SIGNAL(clicked()), this, SLOT( reject() ) );
l->addWidget( button,1 );
QSize sh = sizeHint();
setFixedHeight( sh.height() );
m_bInputFileNameChanged = false;
#ifdef KREPLACEMENTS_H
m_pLineA->lineEdit()->installEventFilter( this );
m_pLineB->lineEdit()->installEventFilter( this );
m_pLineC->lineEdit()->installEventFilter( this );
m_pLineOut->lineEdit()->installEventFilter( this );
#endif
}
示例5: variantMapToJsonDocument
QJsonDocument variantMapToJsonDocument(const QSettings::SettingsMap& map) {
QJsonObject object;
for (auto it = map.cbegin(); it != map.cend(); ++it) {
auto& key = it.key();
auto& variant = it.value();
auto variantType = variant.type();
// Switch some types so they are readable/modifiable in the json file
if (variantType == QVariant(1.0f).type()) { // float
variantType = QVariant::Double;
}
if (variantType == QVariant((quint16)0).type()) { // uint16
variantType = QVariant::UInt;
}
if (variantType == QVariant::Url) { // QUrl
variantType = QVariant::String;
}
switch (variantType) {
case QVariant::Hash: {
qCritical() << "Unsupported variant type" << variant.typeName() << ";" << key << variant;
Q_ASSERT(false);
break;
}
case QVariant::Invalid:
object.insert(key, QJsonValue());
break;
case QVariant::LongLong:
case QVariant::ULongLong:
case QVariant::Int:
case QVariant::UInt:
case QVariant::Bool:
case QVariant::Double:
case QVariant::Map:
case QVariant::List:
object.insert(key, QJsonValue::fromVariant(variant));
break;
case QVariant::String: {
QString result = variant.toString();
if (result.startsWith(QLatin1Char('@'))) {
result.prepend(QLatin1Char('@'));
}
object.insert(key, result);
break;
}
case QVariant::ByteArray: {
QByteArray a = variant.toByteArray();
QString result = QLatin1String("@ByteArray(");
result += QString::fromLatin1(a.constData(), a.size());
result += QLatin1Char(')');
object.insert(key, result);
break;
}
case QVariant::Rect: {
QRect r = qvariant_cast<QRect>(variant);
QString result = QLatin1String("@Rect(");
result += QString::number(r.x());
result += QLatin1Char(' ');
result += QString::number(r.y());
result += QLatin1Char(' ');
result += QString::number(r.width());
result += QLatin1Char(' ');
result += QString::number(r.height());
result += QLatin1Char(')');
object.insert(key, result);
break;
}
case QVariant::Size: {
QSize s = qvariant_cast<QSize>(variant);
QString result = QLatin1String("@Size(");
result += QString::number(s.width());
result += QLatin1Char(' ');
result += QString::number(s.height());
result += QLatin1Char(')');
object.insert(key, result);
break;
}
case QVariant::Point: {
QPoint p = qvariant_cast<QPoint>(variant);
QString result = QLatin1String("@Point(");
result += QString::number(p.x());
result += QLatin1Char(' ');
result += QString::number(p.y());
result += QLatin1Char(')');
object.insert(key, result);
break;
}
default: {
QByteArray array;
{
QDataStream stream(&array, QIODevice::WriteOnly);
stream.setVersion(QDataStream::Qt_4_0);
stream << variant;
}
QString result = QLatin1String("@Variant(");
//.........这里部分代码省略.........
示例6: read_image_scaled
static void read_image_scaled(QImage *outImage, png_structp png_ptr, png_infop info_ptr,
QPngHandlerPrivate::AllocatedMemoryPointers &, QSize scaledSize)
{
png_uint_32 width;
png_uint_32 height;
int bit_depth;
int color_type;
png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, 0, 0, 0);
uchar *data = outImage->bits();
int bpl = outImage->bytesPerLine();
if (scaledSize.isEmpty() || !width || !height)
return;
const quint32 iysz = height;
const quint32 ixsz = width;
const quint32 oysz = scaledSize.height();
const quint32 oxsz = scaledSize.width();
const quint32 ibw = 4*width;
amp.accRow = new quint32[ibw];
memset(amp.accRow, 0, ibw*sizeof(quint32));
amp.inRow = new png_byte[ibw];
memset(amp.inRow, 0, ibw*sizeof(png_byte));
amp.outRow = new uchar[ibw];
memset(amp.outRow, 0, ibw*sizeof(uchar));
qint32 rval = 0;
for (quint32 oy=0; oy<oysz; oy++) {
// Store the rest of the previous input row, if any
for (quint32 i=0; i < ibw; i++)
amp.accRow[i] = rval*amp.inRow[i];
// Accumulate the next input rows
for (rval = iysz-rval; rval > 0; rval-=oysz) {
png_read_row(png_ptr, amp.inRow, NULL);
quint32 fact = qMin(oysz, quint32(rval));
for (quint32 i=0; i < ibw; i++)
amp.accRow[i] += fact*amp.inRow[i];
}
rval *= -1;
// We have a full output row, store it
for (quint32 i=0; i < ibw; i++)
amp.outRow[i] = uchar(amp.accRow[i]/iysz);
quint32 a[4] = {0, 0, 0, 0};
qint32 cval = oxsz;
quint32 ix = 0;
for (quint32 ox=0; ox<oxsz; ox++) {
for (quint32 i=0; i < 4; i++)
a[i] = cval * amp.outRow[ix+i];
for (cval = ixsz - cval; cval > 0; cval-=oxsz) {
ix += 4;
if (ix >= ibw)
break; // Safety belt, should not happen
quint32 fact = qMin(oxsz, quint32(cval));
for (quint32 i=0; i < 4; i++)
a[i] += fact * amp.outRow[ix+i];
}
cval *= -1;
for (quint32 i=0; i < 4; i++)
data[(4*ox)+i] = uchar(a[i]/ixsz);
}
data += bpl;
}
amp.deallocate();
outImage->setDotsPerMeterX((png_get_x_pixels_per_meter(png_ptr,info_ptr)*oxsz)/ixsz);
outImage->setDotsPerMeterY((png_get_y_pixels_per_meter(png_ptr,info_ptr)*oysz)/iysz);
}
示例7: RCDraw
RCDrawRobot::RCDrawRobot(const QPointF ¢er, QSize size, QWidget *parent) : RCDraw(QRect(center.x()-(size.width()/2.), center.y()-(size.height()/2.), size.width(), size.height()), parent)
{
init();
}
示例8: pixmap
VpnWizard::VpnWizard(QWidget * parent)
: FramelessWizard(parent)
{
addPage(new CStartPage);
addPage(new GeneralPage);
addPage(new RemotePage);
addPage(new CertPage);
addPage(new AdvPage);
addPage(new CEndPage);
//this->button(QWizard::WizardButton::BackButton)->setIcon(QIcon(":/data/images/back_small.png"));
//this->button(QWizard::WizardButton::NextButton)->setIcon(QIcon(":/data/images/next_small.png"));
auto geom = this->geometry();
geom.setHeight(460);
geom.setWidth(501);
QSize size = geom.size();
//
int h = size.height();
int w = size.width();
//
size.setHeight(qFloor(h * windowsDpiScale()));
size.setWidth(qFloor(w * windowsDpiScale()));
setFixedWidth(size.width());
setFixedHeight(size.height());
//
resize(size);
QPixmap pixmap(":/data/images/banner_wiz.png");
pixmap = pixmap.scaledToWidth(size.width(), Qt::TransformationMode::SmoothTransformation);
setPixmap(QWizard::BannerPixmap, pixmap);
//page(0)->setContentsMargins(0, 20, 0, 0);
//page(1)->setContentsMargins(0, 20, 0, 0);
//page(2)->setContentsMargins(0, 20, 0, 0);
//page(3)->setContentsMargins(0, 20, 0, 0);
//page(4)->setContentsMargins(0, 20, 0, 0);
setWindowIcon(QIcon(":/data/images/logo.png"));
setWindowTitle(QObject::tr("Create a new SSL VPN connection"));
setWindowFlags(Qt::WindowCloseButtonHint);
setModal(true);
this->setWindowFlags(Qt::WindowCloseButtonHint | Qt::FramelessWindowHint);
DWORD style = GetWindowLong((HWND)winId(), GWL_STYLE);
SetWindowLong((HWND)winId(), GWL_STYLE, style);
setWizardStyle(ModernStyle);
//this->button(QWizard::WizardButton::NextButton)->setLayoutDirection(Qt::RightToLeft);
this->setButtonText(QWizard::WizardButton::NextButton, QObject::tr("Next"));
this->setButtonText(QWizard::WizardButton::BackButton, QObject::tr("Back"));
this->setButtonText(QWizard::WizardButton::CancelButton, QObject::tr("Cancel"));
this->setButtonText(QWizard::WizardButton::FinishButton, QObject::tr("Finish"));
setStyleSheet("QPushButton:hover {background-color: rgb(195, 195, 195);}\nQPushButton {;text-align:center; \npadding-left: 3px;\n padding-top: 3px; padding-right: 3px;\n padding-bottom: 3px;}");
this->setupFrameless();
}
示例9: setup_qt
static
void setup_qt(QImage& image, png_structp png_ptr, png_infop info_ptr, QSize scaledSize, bool *doScaledRead, float screen_gamma=0.0)
{
if (screen_gamma != 0.0 && png_get_valid(png_ptr, info_ptr, PNG_INFO_gAMA)) {
double file_gamma;
png_get_gAMA(png_ptr, info_ptr, &file_gamma);
png_set_gamma(png_ptr, screen_gamma, file_gamma);
}
png_uint_32 width;
png_uint_32 height;
int bit_depth;
int color_type;
png_bytep trans_alpha = 0;
png_color_16p trans_color_p = 0;
int num_trans;
png_colorp palette = 0;
int num_palette;
int interlace_method;
png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_method, 0, 0);
png_set_interlace_handling(png_ptr);
if (color_type == PNG_COLOR_TYPE_GRAY) {
// Black & White or 8-bit grayscale
if (bit_depth == 1 && png_get_channels(png_ptr, info_ptr) == 1) {
png_set_invert_mono(png_ptr);
png_read_update_info(png_ptr, info_ptr);
if (image.size() != QSize(width, height) || image.format() != QImage::Format_Mono) {
image = QImage(width, height, QImage::Format_Mono);
if (image.isNull())
return;
}
image.setColorCount(2);
image.setColor(1, qRgb(0,0,0));
image.setColor(0, qRgb(255,255,255));
} else if (bit_depth == 16 && png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) {
png_set_expand(png_ptr);
png_set_strip_16(png_ptr);
png_set_gray_to_rgb(png_ptr);
if (image.size() != QSize(width, height) || image.format() != QImage::Format_ARGB32) {
image = QImage(width, height, QImage::Format_ARGB32);
if (image.isNull())
return;
}
if (QSysInfo::ByteOrder == QSysInfo::BigEndian)
png_set_swap_alpha(png_ptr);
png_read_update_info(png_ptr, info_ptr);
} else {
if (bit_depth == 16)
png_set_strip_16(png_ptr);
else if (bit_depth < 8)
png_set_packing(png_ptr);
int ncols = bit_depth < 8 ? 1 << bit_depth : 256;
png_read_update_info(png_ptr, info_ptr);
if (image.size() != QSize(width, height) || image.format() != QImage::Format_Indexed8) {
image = QImage(width, height, QImage::Format_Indexed8);
if (image.isNull())
return;
}
image.setColorCount(ncols);
for (int i=0; i<ncols; i++) {
int c = i*255/(ncols-1);
image.setColor(i, qRgba(c,c,c,0xff));
}
if (png_get_tRNS(png_ptr, info_ptr, &trans_alpha, &num_trans, &trans_color_p) && trans_color_p) {
const int g = trans_color_p->gray;
if (g < ncols) {
image.setColor(g, 0);
}
}
}
} else if (color_type == PNG_COLOR_TYPE_PALETTE
&& png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette)
&& num_palette <= 256)
{
// 1-bit and 8-bit color
if (bit_depth != 1)
png_set_packing(png_ptr);
png_read_update_info(png_ptr, info_ptr);
png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, 0, 0, 0);
QImage::Format format = bit_depth == 1 ? QImage::Format_Mono : QImage::Format_Indexed8;
if (image.size() != QSize(width, height) || image.format() != format) {
image = QImage(width, height, format);
if (image.isNull())
return;
}
png_get_PLTE(png_ptr, info_ptr, &palette, &num_palette);
image.setColorCount(num_palette);
int i = 0;
if (png_get_tRNS(png_ptr, info_ptr, &trans_alpha, &num_trans, &trans_color_p) && trans_alpha) {
while (i < num_trans) {
image.setColor(i, qRgba(
palette[i].red,
palette[i].green,
palette[i].blue,
trans_alpha[i]
)
);
i++;
//.........这里部分代码省略.........
示例10: posForLocation
//! [1]
static QPointF posForLocation(int column, int row, const QSize &size)
{
return QPointF(column * 150, row * 150)
- QPointF((size.width() - 1) * 75, (size.height() - 1) * 75);
}
示例11: boundsFromSize
//! [0]
static QRectF boundsFromSize(const QSize &size)
{
return QRectF((-size.width() / 2.0) * 150, (-size.height() / 2.0) * 150,
size.width() * 150, size.height() * 150);
}
示例12: pmKey
static inline int pmKey(const QSize &size, QIcon::Mode mode, QIcon::State state)
{
return ((((((size.width()<<11)|size.height())<<11)|mode)<<4)|state);
}
示例13: paint
void UIGraphicsButton::paint(QPainter *pPainter, const QStyleOptionGraphicsItem* /* pOption */, QWidget* /* pWidget = 0 */)
{
/* Prepare variables: */
int iMargin = data(GraphicsButton_Margin).toInt();
QIcon icon = data(GraphicsButton_Icon).value<QIcon>();
QSize iconSize = data(GraphicsButton_IconSize).toSize();
/* Which type button has: */
switch (m_buttonType)
{
case UIGraphicsButtonType_Iconified:
{
/* Just draw the pixmap: */
pPainter->drawPixmap(QRect(QPoint(iMargin, iMargin), iconSize), icon.pixmap(iconSize));
break;
}
case UIGraphicsButtonType_DirectArrow:
{
/* Prepare variables: */
QPalette pal = palette();
QColor buttonColor = pal.color(m_fParentSelected ? QPalette::HighlightedText : QPalette::Mid);
#ifdef Q_WS_MAC
/* Mac is using only light standard highlight colors, keeping highlight-text color always black.
* User can choose a darker (non-standard) highlight color but it will be his visibility problem.
* I think using highlight-text color (black) for arrow-buttons is too ugly,
* so the corresponding color will be received from the highlight color: */
if (m_fParentSelected)
buttonColor = pal.color(QPalette::Highlight).darker(150);
#endif /* Q_WS_MAC */
/* Setup: */
pPainter->setRenderHint(QPainter::Antialiasing);
QPen pen = pPainter->pen();
pen.setColor(buttonColor);
pen.setWidth(2);
pen.setCapStyle(Qt::RoundCap);
/* Draw path: */
QPainterPath circlePath;
circlePath.moveTo(iMargin, iMargin);
circlePath.lineTo(iMargin + iconSize.width() / 2, iMargin);
circlePath.arcTo(QRectF(circlePath.currentPosition(), iconSize).translated(-iconSize.width() / 2, 0), 90, -180);
circlePath.lineTo(iMargin, iMargin + iconSize.height());
circlePath.closeSubpath();
pPainter->strokePath(circlePath, pen);
/* Draw triangle: */
QPainterPath linePath;
linePath.moveTo(iMargin + 5, iMargin + 5);
linePath.lineTo(iMargin + iconSize.height() - 5, iMargin + iconSize.width() / 2);
linePath.lineTo(iMargin + 5, iMargin + iconSize.width() - 5);
pPainter->strokePath(linePath, pen);
break;
}
case UIGraphicsButtonType_RoundArrow:
{
/* Prepare variables: */
QPalette pal = palette();
QColor buttonColor = pal.color(m_fParentSelected ? QPalette::HighlightedText : QPalette::Mid);
#ifdef Q_WS_MAC
/* Mac is using only light standard highlight colors, keeping highlight-text color always black.
* User can choose a darker (non-standard) highlight color but it will be his visibility problem.
* I think using highlight-text color (black) for arrow-buttons is too ugly,
* so the corresponding color will be received from the highlight color: */
if (m_fParentSelected)
buttonColor = pal.color(QPalette::Highlight).darker(150);
#endif /* Q_WS_MAC */
/* Setup: */
pPainter->setRenderHint(QPainter::Antialiasing);
QPen pen = pPainter->pen();
pen.setColor(buttonColor);
pen.setWidth(2);
pen.setCapStyle(Qt::RoundCap);
/* Draw circle: */
QPainterPath circlePath;
circlePath.moveTo(iMargin, iMargin);
circlePath.addEllipse(QRectF(circlePath.currentPosition(), iconSize));
pPainter->strokePath(circlePath, pen);
/* Draw triangle: */
QPainterPath linePath;
linePath.moveTo(iMargin + 5, iMargin + 5);
linePath.lineTo(iMargin + iconSize.height() - 5, iMargin + iconSize.width() / 2);
linePath.lineTo(iMargin + 5, iMargin + iconSize.width() - 5);
pPainter->strokePath(linePath, pen);
break;
}
}
}
示例14: setVisible
void StelDialog::setVisible(bool v)
{
if (v)
{
QSize screenSize = StelMainView::getInstance().size();
if (dialog)
{
dialog->show();
StelMainView::getInstance().scene()->setActiveWindow(proxy);
// If the main window has been resized, it is possible the dialog
// will be off screen. Check for this and move it to a visible
// position if necessary
QPointF newPos = proxy->pos();
if (newPos.x()>=screenSize.width())
newPos.setX(screenSize.width() - dialog->size().width());
if (newPos.y()>=screenSize.height())
newPos.setY(screenSize.height() - dialog->size().height());
if (newPos != dialog->pos())
proxy->setPos(newPos);
proxy->setFocus();
return;
}
QGraphicsWidget* parent = qobject_cast<QGraphicsWidget*>(this->parent());
dialog = new QDialog(NULL);
// dialog->setParent(parent);
StelGui* gui = dynamic_cast<StelGui*>(StelApp::getInstance().getGui());
Q_ASSERT(gui);
//dialog->setAttribute(Qt::WA_OpaquePaintEvent, true);
connect(dialog, SIGNAL(rejected()), this, SLOT(close()));
createDialogContent();
dialog->setStyleSheet(gui->getStelStyle().qtStyleSheet);
proxy = new CustomProxy(parent, Qt::Tool);
proxy->setWidget(dialog);
QSizeF size = proxy->size();
// centre with dialog according to current window size.
int newX = (int)((screenSize.width() - size.width())/2);
int newY = (int)((screenSize.height() - size.height())/2);
// Make sure that the window's title bar is accessible
if (newY <-0)
newY = 0;
proxy->setPos(newX, newY);
proxy->setWindowFrameMargins(2,0,2,2);
// (this also changes the bounding rectangle size)
// The caching is buggy on all plateforms with Qt 4.5.2
proxy->setCacheMode(QGraphicsItem::ItemCoordinateCache);
proxy->setZValue(100);
StelMainView::getInstance().scene()->setActiveWindow(proxy);
proxy->setFocus();
}
else
{
dialog->hide();
emit visibleChanged(false);
//proxy->clearFocus();
StelMainView::getInstance().focusSky();
}
}
示例15: qDebug
void Window::resizeD3D(const QSize &size)
{
qDebug("resize %d %d", size.width(), size.height());
}