本文整理汇总了C++中QSize::setWidth方法的典型用法代码示例。如果您正苦于以下问题:C++ QSize::setWidth方法的具体用法?C++ QSize::setWidth怎么用?C++ QSize::setWidth使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QSize
的用法示例。
在下文中一共展示了QSize::setWidth方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: loadHtml
void QgsComposerHtml::loadHtml()
{
if ( !mWebPage )
{
return;
}
QString loadedHtml;
switch ( mContentMode )
{
case QgsComposerHtml::Url:
{
QString currentUrl = mUrl.toString();
//data defined url set?
QVariant exprVal;
if ( dataDefinedEvaluate( QgsComposerObject::SourceUrl, exprVal ) )
{
currentUrl = exprVal.toString().trimmed();;
QgsDebugMsg( QString( "exprVal Source Url:%1" ).arg( currentUrl ) );
}
if ( currentUrl.isEmpty() )
{
return;
}
if ( currentUrl != mLastFetchedUrl )
{
loadedHtml = fetchHtml( QUrl( currentUrl ) );
mLastFetchedUrl = currentUrl;
}
else
{
loadedHtml = mFetchedHtml;
}
break;
}
case QgsComposerHtml::ManualHtml:
loadedHtml = mHtml;
break;
}
//evaluate expressions
if ( mEvaluateExpressions )
{
loadedHtml = QgsExpression::replaceExpressionText( loadedHtml, mExpressionFeature, mExpressionLayer );
}
mLoaded = false;
//set html, using the specified url as base if in Url mode
mWebPage->mainFrame()->setHtml( loadedHtml, mContentMode == QgsComposerHtml::Url ? QUrl( mActualFetchedUrl ) : QUrl() );
//set user stylesheet
QWebSettings* settings = mWebPage->settings();
if ( mEnableUserStylesheet && ! mUserStylesheet.isEmpty() )
{
QByteArray ba;
ba.append( mUserStylesheet.toUtf8() );
QUrl cssFileURL = QUrl( "data:text/css;charset=utf-8;base64," + ba.toBase64() );
settings->setUserStyleSheetUrl( cssFileURL );
}
else
{
settings->setUserStyleSheetUrl( QUrl() );
}
while ( !mLoaded )
{
qApp->processEvents();
}
if ( frameCount() < 1 ) return;
QSize contentsSize = mWebPage->mainFrame()->contentsSize();
//find maximum frame width
double maxFrameWidth = 0;
QList<QgsComposerFrame*>::const_iterator frameIt = mFrameItems.constBegin();
for ( ; frameIt != mFrameItems.constEnd(); ++frameIt )
{
maxFrameWidth = qMax( maxFrameWidth, ( *frameIt )->boundingRect().width() );
}
//set content width to match maximum frame width
contentsSize.setWidth( maxFrameWidth * mHtmlUnitsToMM );
mWebPage->setViewportSize( contentsSize );
mWebPage->mainFrame()->setScrollBarPolicy( Qt::Horizontal, Qt::ScrollBarAlwaysOff );
mWebPage->mainFrame()->setScrollBarPolicy( Qt::Vertical, Qt::ScrollBarAlwaysOff );
mSize.setWidth( contentsSize.width() / mHtmlUnitsToMM );
mSize.setHeight( contentsSize.height() / mHtmlUnitsToMM );
renderCachedImage();
recalculateFrameSizes();
emit changed();
//trigger a repaint
emit contentsChanged();
}
示例2: sizeHint
QSize MTButtonLabel::sizeHint() const
{
QSize hint = QPushButton::sizeHint();
hint.setWidth(hint.width() + 20);
return hint;
}
示例3: doLayout
QSize FlowLayout::doLayout(QRect rect, bool apply) const
{
//Configuration des marges
int x,y=0; //Coordonnées courrantes
int left, right, top, bottom; //Marge du layout
int h=0; //Hauteur de la ligne courante
int w;//Largeur du layout
int nbe;//Nombre de widget expensible latéralement
int p;//nom de pixel à rajouter aux widget expendable
QSize s;
auto it_b = items.begin(), end = items.end();
auto it_e = it_b;
getContentsMargins(&left, & top, &right, &bottom);
if(m_d == Qt::LeftToRight)
{
w = rect.width() - right;
y = rect.top() + top;
left += rect.left();
while(it_b != end)
{
nbe = (*it_b)->expandingDirections() & Qt::Horizontal;
x = left;
y += h;
s = (*it_b)->sizeHint();
x += s.width();
h = s.height();
it_e = it_b;
while(x < w && (++it_e) != end)
{
nbe += (*it_e)->expandingDirections() & Qt::Horizontal;
s = (*it_e)->sizeHint();
x += s.width() + m_hs;
if(h<s.height()) h = s.height();
}
if(it_e == it_b) ++it_e;
if(it_e != end)
{
x -= s.width();
nbe -= (*it_b)->expandingDirections() & Qt::Horizontal;
}
if(nbe)
{
p = (w-x) / nbe;
nbe = (w-x) % nbe;
}
else p=0;
if(apply)
{
x = left;
while(it_b != it_e)
{
s = (*it_b)->sizeHint();
s.setHeight(h);
if(m_e && ((*it_b)->expandingDirections() & Qt::Horizontal))
{
if(nbe)
{
--nbe;
s.rwidth() += p+1;
}
else s.rwidth() += p;
}
(*it_b)->setGeometry(QRect(QPoint(x,y),s));
++it_b;
x += s.width() + m_hs;
}
}
it_b = it_e;
y += m_vs;
}
}
s.setWidth(rect.width());
s.setHeight(y+h+bottom);
return s;
}
示例4: tabSizeHint
QSize TabBar::tabSizeHint(int index, bool fast) const
{
if (!isVisible() || !mApp->proxyStyle()) {
// Don't calculate it when tabbar is not visible
// It produces invalid size anyway
//
// We also need ProxyStyle to be set before calculating minimum sizes for tabs
return QSize(-1, -1);
}
static int PINNED_TAB_WIDTH = comboTabBarPixelMetric(ComboTabBar::PinnedTabWidth);
static int MINIMUM_ACTIVE_TAB_WIDTH = comboTabBarPixelMetric(ComboTabBar::ActiveTabMinimumWidth);
static int MAXIMUM_TAB_WIDTH = comboTabBarPixelMetric(ComboTabBar::NormalTabMaximumWidth);
static int MINIMUM_TAB_WIDTH = comboTabBarPixelMetric(ComboTabBar::NormalTabMinimumWidth);
QSize size = ComboTabBar::tabSizeHint(index);
// The overflowed tabs have same size and we can use this fast method
if (fast) {
size.setWidth(index >= pinnedTabsCount() ? MINIMUM_TAB_WIDTH : PINNED_TAB_WIDTH);
return size;
}
WebTab* webTab = qobject_cast<WebTab*>(m_tabWidget->widget(index));
TabBar* tabBar = const_cast <TabBar*>(this);
if (webTab && webTab->isPinned()) {
size.setWidth(PINNED_TAB_WIDTH);
}
else {
int availableWidth = mainTabBarWidth() - comboTabBarPixelMetric(ExtraReservedWidth);
if (availableWidth < 0) {
return QSize(-1, -1);
}
const int normalTabsCount = ComboTabBar::normalTabsCount();
if (availableWidth >= MAXIMUM_TAB_WIDTH * normalTabsCount) {
m_normalTabWidth = MAXIMUM_TAB_WIDTH;
size.setWidth(m_normalTabWidth);
}
else if (normalTabsCount > 0) {
int maxWidthForTab = availableWidth / normalTabsCount;
int realTabWidth = maxWidthForTab;
bool adjustingActiveTab = false;
if (realTabWidth < MINIMUM_ACTIVE_TAB_WIDTH) {
maxWidthForTab = normalTabsCount > 1 ? (availableWidth - MINIMUM_ACTIVE_TAB_WIDTH) / (normalTabsCount - 1) : 0;
realTabWidth = MINIMUM_ACTIVE_TAB_WIDTH;
adjustingActiveTab = true;
}
bool tryAdjusting = availableWidth >= MINIMUM_TAB_WIDTH * normalTabsCount;
if (m_showCloseOnInactive != 1 && tabsClosable() && availableWidth < (MINIMUM_TAB_WIDTH + 25) * normalTabsCount) {
// Hiding close buttons to save some space
tabBar->setTabsClosable(false);
tabBar->showCloseButton(currentIndex());
}
if (m_showCloseOnInactive == 1) {
// Always showing close buttons
tabBar->setTabsClosable(true);
tabBar->showCloseButton(currentIndex());
}
if (tryAdjusting) {
m_normalTabWidth = maxWidthForTab;
// Fill any empty space (we've got from rounding) with active tab
if (index == mainTabBarCurrentIndex()) {
if (adjustingActiveTab) {
m_activeTabWidth = (availableWidth - MINIMUM_ACTIVE_TAB_WIDTH
- maxWidthForTab * (normalTabsCount - 1)) + realTabWidth;
}
else {
m_activeTabWidth = (availableWidth - maxWidthForTab * normalTabsCount) + maxWidthForTab;
}
size.setWidth(m_activeTabWidth);
}
else {
size.setWidth(m_normalTabWidth);
}
}
}
// Restore close buttons according to preferences
if (m_showCloseOnInactive != 2 && !tabsClosable() && availableWidth >= (MINIMUM_TAB_WIDTH + 25) * normalTabsCount) {
tabBar->setTabsClosable(true);
// Hide close buttons on pinned tabs
for (int i = 0; i < count(); ++i) {
tabBar->updatePinnedTabCloseButton(i);
}
}
}
if (index == count() - 1) {
WebTab* lastMainActiveTab = qobject_cast<WebTab*>(m_tabWidget->widget(mainTabBarCurrentIndex()));
int xForAddTabButton = cornerWidth(Qt::TopLeftCorner) + pinTabBarWidth() + normalTabsCount() * m_normalTabWidth;
//.........这里部分代码省略.........
示例5: sizeFromContent
QSize QDockWidgetLayout::sizeFromContent(const QSize &content, bool floating) const
{
QSize result = content;
if (verticalTitleBar) {
result.setHeight(qMax(result.height(), minimumTitleWidth()));
result.setWidth(qMax(content.width(), 0));
} else {
result.setHeight(qMax(result.height(), 0));
result.setWidth(qMax(content.width(), minimumTitleWidth()));
}
QDockWidget *w = qobject_cast<QDockWidget*>(parentWidget());
const bool nativeDeco = nativeWindowDeco(floating);
int fw = floating && !nativeDeco
? w->style()->pixelMetric(QStyle::PM_DockWidgetFrameWidth, 0, w)
: 0;
const int th = titleHeight();
if (!nativeDeco) {
if (verticalTitleBar)
result += QSize(th + 2*fw, 2*fw);
else
result += QSize(2*fw, th + 2*fw);
}
result.setHeight(qMin(result.height(), (int) QWIDGETSIZE_MAX));
result.setWidth(qMin(result.width(), (int) QWIDGETSIZE_MAX));
if (content.width() < 0)
result.setWidth(-1);
if (content.height() < 0)
result.setHeight(-1);
int left, top, right, bottom;
w->getContentsMargins(&left, &top, &right, &bottom);
//we need to substract the contents margin (it will be added by the caller)
QSize min = w->minimumSize() - QSize(left + right, top + bottom);
QSize max = w->maximumSize() - QSize(left + right, top + bottom);
/* A floating dockwidget will automatically get its minimumSize set to the layout's
minimum size + deco. We're *not* interested in this, we only take minimumSize()
into account if the user set it herself. Otherwise we end up expanding the result
of a calculation for a non-floating dock widget to a floating dock widget's
minimum size + window decorations. */
uint explicitMin = 0;
uint explicitMax = 0;
if (w->d_func()->extra != 0) {
explicitMin = w->d_func()->extra->explicitMinSize;
explicitMax = w->d_func()->extra->explicitMaxSize;
}
if (!(explicitMin & Qt::Horizontal) || min.width() == 0)
min.setWidth(-1);
if (!(explicitMin & Qt::Vertical) || min.height() == 0)
min.setHeight(-1);
if (!(explicitMax & Qt::Horizontal))
max.setWidth(QWIDGETSIZE_MAX);
if (!(explicitMax & Qt::Vertical))
max.setHeight(QWIDGETSIZE_MAX);
return result.boundedTo(max).expandedTo(min);
}
示例6: exportcsvFile
//----------------------------------------------------------------------------
// Routines that handle Comma-Separated Values export file format.
//
QString timetrackerstorage::exportcsvFile(TaskView *taskview, const ReportCriteria &rc)
{
kDebug(5970) << "Entering function";
QString delim = rc.delimiter;
QString dquote = rc.quote;
QString double_dquote = dquote + dquote;
bool to_quote = true;
QString err;
Task* task;
int maxdepth=0;
QString title = i18n("Export Progress");
KProgressDialog dialog( taskview, 0, title );
dialog.setAutoClose( true );
dialog.setAllowCancel( true );
dialog.progressBar()->setMaximum( 2 * taskview->count() );
// The default dialog was not displaying all the text in the title bar.
int width = taskview->fontMetrics().width(title) * 3;
QSize dialogsize;
dialogsize.setWidth(width);
dialog.setInitialSize( dialogsize );
if ( taskview->count() > 1 ) dialog.show();
QString retval;
// Find max task depth
int tasknr = 0;
while ( tasknr < taskview->count() && !dialog.wasCancelled() )
{
dialog.progressBar()->setValue( dialog.progressBar()->value() + 1 );
if ( tasknr % 15 == 0 ) kapp->processEvents(); // repainting is slow
if ( taskview->itemAt(tasknr)->depth() > maxdepth )
maxdepth = taskview->itemAt(tasknr)->depth();
tasknr++;
}
// Export to file
tasknr = 0;
while ( tasknr < taskview->count() && !dialog.wasCancelled() )
{
task = taskview->itemAt( tasknr );
dialog.progressBar()->setValue( dialog.progressBar()->value() + 1 );
if ( tasknr % 15 == 0 ) kapp->processEvents();
// indent the task in the csv-file:
for ( int i=0; i < task->depth(); ++i ) retval += delim;
/*
// CSV compliance
// Surround the field with quotes if the field contains
// a comma (delim) or a double quote
if (task->name().contains(delim) || task->name().contains(dquote))
to_quote = true;
else
to_quote = false;
*/
to_quote = true;
if (to_quote)
retval += dquote;
// Double quotes replaced by a pair of consecutive double quotes
retval += task->name().replace( dquote, double_dquote );
if (to_quote)
retval += dquote;
// maybe other tasks are more indented, so to align the columns:
for ( int i = 0; i < maxdepth - task->depth(); ++i ) retval += delim;
retval += delim + formatTime( task->sessionTime(),
rc.decimalMinutes )
+ delim + formatTime( task->time(),
rc.decimalMinutes )
+ delim + formatTime( task->totalSessionTime(),
rc.decimalMinutes )
+ delim + formatTime( task->totalTime(),
rc.decimalMinutes )
+ '\n';
tasknr++;
}
// save, either locally or remote
if ((rc.url.isLocalFile()) || (!rc.url.url().contains("/")))
{
QString filename=rc.url.toLocalFile();
if (filename.isEmpty()) filename=rc.url.url();
QFile f( filename );
if( !f.open( QIODevice::WriteOnly ) )
{
err = i18n( "Could not open \"%1\".", filename );
}
if (err.length()==0)
{
QTextStream stream(&f);
// Export to file
stream << retval;
//.........这里部分代码省略.........
示例7: fitIt
bool SizeFitter::fitIt(QSize size, QSize &fittedSize, QRect *clippedRect) const
{
float scaleFactor;
bool result;
QSize orientedTargetSize = getOrientedTargetSize(size);
// enlarge?
if (!isFitOptionEnabled(FitOption::Enlarge) &&
size.width() <= orientedTargetSize.width() &&
size.height() <= orientedTargetSize.height()) {
fittedSize = size;
if (clippedRect != nullptr) {
clippedRect->setTopLeft(QPoint(0, 0));
clippedRect->setSize(fittedSize);
}
return false;
}
result = false;
if (size.width() > size.height()) {
// landscape
scaleFactor = (float)orientedTargetSize.width() / (float)size.width();
fittedSize.setWidth(qRound(size.width() * scaleFactor));
fittedSize.setHeight(qRound(size.height() * scaleFactor));
if (scaleFactor != 1.0f) {
result = true;
}
// the new height might still be too large...
if (fittedSize.height() > orientedTargetSize.height()) {
// ...so scale again
scaleFactor = (float)orientedTargetSize.height() / (float)fittedSize.height();
fittedSize.setWidth (qRound(fittedSize.width() * scaleFactor));
fittedSize.setHeight(qRound(fittedSize.height() * scaleFactor));
if (scaleFactor != 1.0f) {
result = true ;
}
}
} else {
// portrait
scaleFactor = (float)orientedTargetSize.height() / (float)size.height();
fittedSize.setWidth (qRound(size.width() * scaleFactor));
fittedSize.setHeight (qRound(size.height() * scaleFactor));
if (scaleFactor != 1.0f) {
result = true;
}
// the new width might still be too large...
if (fittedSize.width() > orientedTargetSize.width()) {
// ...so scale again
scaleFactor = (float)orientedTargetSize.width() / (float)fittedSize.width();
fittedSize.setWidth (qRound(fittedSize.width() * scaleFactor));
fittedSize.setHeight (qRound(fittedSize.height() * scaleFactor));
if (scaleFactor != 1.0f) {
result = true ;
}
}
}
if (clippedRect != nullptr) {
// no clipping, select entire image
clippedRect->setTopLeft(QPoint(0, 0));
clippedRect->setSize(size);
}
return result;
}
示例8: accept
void PageLayoutDialog::accept()
{
PrintSettings settings;
settings.setPageLayout(pageLayout());
settings.setPrintGrid(d->sheetPage.gridCheckBox->isChecked());
settings.setPrintCommentIndicator(d->sheetPage.commentCheckBox->isChecked());
settings.setPrintFormulaIndicator(d->sheetPage.formulaCheckBox->isChecked());
settings.setPrintCharts(d->sheetPage.chartsCheckBox->isChecked());
settings.setPrintGraphics(d->sheetPage.drawingsCheckBox->isChecked());
settings.setPrintObjects(d->sheetPage.objectsCheckBox->isChecked());
settings.setPrintZeroValues(d->sheetPage.zeroValuesCheckBox->isChecked());
settings.setPrintHeaders(d->sheetPage.headersCheckBox->isChecked());
settings.setPageOrder(d->sheetPage.ltrButton->isChecked() ? PrintSettings::LeftToRight : PrintSettings::TopToBottom);
settings.setCenterHorizontally(d->sheetPage.horizontalCheckBox->isChecked());
settings.setCenterVertically(d->sheetPage.verticalCheckBox->isChecked());
// Set the repeated columns.
if (d->sheetPage.columnsCheckBox->isChecked()) {
// TODO Stefan: Check if width of repeated columns exceeds page width.
const int startColumn = Util::decodeColumnLabelText(d->sheetPage.startColumnComboBox->currentText());
const int endColumn = Util::decodeColumnLabelText(d->sheetPage.endColumnComboBox->currentText());
settings.setRepeatedColumns(qMakePair(qMin(startColumn, endColumn), qMax(startColumn, endColumn)));
} else
settings.setRepeatedColumns(QPair<int, int>());
// Set the repeated rows.
if (d->sheetPage.rowsCheckBox->isChecked()) {
// TODO Stefan: Check if height of repeated rows exceeds page height.
const int startRow = d->sheetPage.startRowComboBox->currentText().toInt();
const int endRow = d->sheetPage.endRowComboBox->currentText().toInt();
settings.setRepeatedRows(qMakePair(qMin(startRow, endRow), qMax(startRow, endRow)));
} else
settings.setRepeatedRows(QPair<int, int>());
bool isValid = false;
settings.setZoom(0.01 * d->sheetPage.zoomComboBox->currentText().remove('%').toDouble(&isValid));
if (!isValid)
settings.setZoom(1.0);
QSize pageLimits;
if (d->sheetPage.pageLimitsButton->isChecked()) {
pageLimits.setWidth(d->sheetPage.horizontalComboBox->currentText().toInt(&isValid));
if (!isValid)
pageLimits.setWidth(0);
pageLimits.setHeight(d->sheetPage.verticalComboBox->currentText().toInt(&isValid));
if (!isValid)
pageLimits.setHeight(0);
}
settings.setPageLimits(pageLimits);
if (applyToDocument()) {
// Apply to all sheets.
KUndo2Command* macroCommand = new KUndo2Command(kundo2_i18n("Set Page Layout"));
const QList<Sheet*> sheets = d->sheet->map()->sheetList();
for (int i = 0; i < sheets.count(); ++i) {
PageLayoutCommand* command = new PageLayoutCommand(sheets[i], settings, macroCommand);
Q_UNUSED(command);
}
d->sheet->doc()->addCommand(macroCommand);
} else {
PageLayoutCommand* command = new PageLayoutCommand(d->sheet, settings);
d->sheet->doc()->addCommand(command);
}
KoPageLayoutDialog::accept();
}
示例9: SyntaxLineEdit
//.........这里部分代码省略.........
// Apply (right arrow) + Cancel (x) + Reload (arrowed circle)
// Down Arrow
// XXX - Move bookmark and apply buttons to the toolbar a la Firefox, Chrome & Safari?
// XXX - Use native buttons on OS X?
bookmark_button_ = new QToolButton(this);
bookmark_button_->setCursor(Qt::ArrowCursor);
bookmark_button_->setStyleSheet(QString(
"QToolButton { /* all types of tool button */"
" border 0 0 0 0;"
" border-right: %1px solid gray;"
" border-top-left-radius: 3px;"
" border-bottom-left-radius: 3px;"
" padding-left: 1px;"
" image: url(:/dfilter/dfilter_bookmark_normal.png);"
// " background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,"
// " stop: 0 #f6f7fa, stop: 1 #dadbde);"
"}"
"QToolButton:hover {"
" image: url(:/dfilter/dfilter_bookmark_hover.png);"
"}"
"QToolButton:pressed {"
" image: url(:/dfilter/dfilter_bookmark_pressed.png);"
"}"
// "QToolButton:pressed {"
// " background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,"
// " stop: 0 #dadbde, stop: 1 #f6f7fa);"
// "}"
).arg(plain_ ? 0 : 1)
);
connect(bookmark_button_, SIGNAL(clicked()), this, SLOT(showDisplayFilterDialog()));
clear_button_ = new QToolButton(this);
clear_button_->setCursor(Qt::ArrowCursor);
clear_button_->setStyleSheet(
"QToolButton {"
" image: url(:/dfilter/dfilter_erase_normal.png);"
" border: none;"
" width: 16px;"
"}"
"QToolButton:hover {"
" image: url(:/dfilter/dfilter_erase_active.png);"
"}"
"QToolButton:pressed {"
" image: url(:/dfilter/dfilter_erase_selected.png);"
"}"
);
clear_button_->hide();
connect(clear_button_, SIGNAL(clicked()), this, SLOT(clear()));
connect(this, SIGNAL(textChanged(const QString&)), this, SLOT(checkFilter(const QString&)));
apply_button_ = NULL;
if (!plain_) {
apply_button_ = new QToolButton(this);
apply_button_->setCursor(Qt::ArrowCursor);
apply_button_->setStyleSheet(
"QToolButton { /* all types of tool button */"
" border 0 0 0 0;"
" border-top-right-radius: 3px;"
" border-bottom-right-radius: 3px;"
" padding-right: 1px;"
" image: url(:/dfilter/dfilter_apply_normal.png);"
"}"
"QToolButton:hover {"
" image: url(:/dfilter/dfilter_apply_hover.png);"
"}"
"QToolButton:pressed {"
" image: url(:/dfilter/dfilter_apply_pressed.png);"
"}"
);
connect(apply_button_, SIGNAL(clicked()), this, SLOT(applyDisplayFilter()));
connect(this, SIGNAL(returnPressed()), this, SLOT(applyDisplayFilter()));
}
int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth);
QSize bksz = bookmark_button_->sizeHint();
QSize cbsz = clear_button_->sizeHint();
QSize apsz;
if (apply_button_) {
apsz = apply_button_->sizeHint();
} else {
apsz.setHeight(0); apsz.setWidth(0);
}
setStyleSheet(QString(
"DisplayFilterEdit {"
" padding-left: %1px;"
" margin-left: %2px;"
" margin-right: %3px;"
"}"
)
.arg(frameWidth + 1)
.arg(bksz.width())
.arg(cbsz.width() + apsz.width() + frameWidth + 1)
);
}
示例10: minimumSizeHint
QSize CategoryFilterWidget::minimumSizeHint() const
{
QSize size = sizeHint();
size.setWidth(6);
return size;
}
示例11: sizeHint
QSize FlexiTableView::sizeHint() const
{
QSize size = QTableView::sizeHint();
size.setWidth(200);
return size;
}
示例12: render
int TmxRasterizer::render(const QString &mapFileName,
const QString &imageFileName)
{
MapReader reader;
std::unique_ptr<Map> map { reader.readMap(mapFileName) };
if (!map) {
qWarning("Error while reading \"%s\":\n%s",
qUtf8Printable(mapFileName),
qUtf8Printable(reader.errorString()));
return 1;
}
std::unique_ptr<MapRenderer> renderer;
switch (map->orientation()) {
case Map::Isometric:
renderer.reset(new IsometricRenderer(map.get()));
break;
case Map::Staggered:
renderer.reset(new StaggeredRenderer(map.get()));
break;
case Map::Hexagonal:
renderer.reset(new HexagonalRenderer(map.get()));
break;
case Map::Orthogonal:
default:
renderer.reset(new OrthogonalRenderer(map.get()));
break;
}
QRect mapBoundingRect = renderer->mapBoundingRect();
QSize mapSize = mapBoundingRect.size();
QPoint mapOffset = mapBoundingRect.topLeft();
qreal xScale, yScale;
if (mSize > 0) {
xScale = (qreal) mSize / mapSize.width();
yScale = (qreal) mSize / mapSize.height();
xScale = yScale = qMin(1.0, qMin(xScale, yScale));
} else if (mTileSize > 0) {
xScale = (qreal) mTileSize / map->tileWidth();
yScale = (qreal) mTileSize / map->tileHeight();
} else {
xScale = yScale = mScale;
}
QMargins margins = map->computeLayerOffsetMargins();
mapSize.setWidth(mapSize.width() + margins.left() + margins.right());
mapSize.setHeight(mapSize.height() + margins.top() + margins.bottom());
mapSize.rwidth() *= xScale;
mapSize.rheight() *= yScale;
QImage image(mapSize, QImage::Format_ARGB32);
image.fill(Qt::transparent);
QPainter painter(&image);
painter.setRenderHint(QPainter::Antialiasing, mUseAntiAliasing);
painter.setRenderHint(QPainter::SmoothPixmapTransform, mSmoothImages);
painter.setTransform(QTransform::fromScale(xScale, yScale));
painter.translate(margins.left(), margins.top());
painter.translate(-mapOffset);
// Perform a similar rendering than found in exportasimagedialog.cpp
LayerIterator iterator(map.get());
while (const Layer *layer = iterator.next()) {
if (!shouldDrawLayer(layer))
continue;
const auto offset = layer->totalOffset();
painter.setOpacity(layer->effectiveOpacity());
painter.translate(offset);
const TileLayer *tileLayer = dynamic_cast<const TileLayer*>(layer);
const ImageLayer *imageLayer = dynamic_cast<const ImageLayer*>(layer);
if (tileLayer) {
renderer->drawTileLayer(&painter, tileLayer);
} else if (imageLayer) {
renderer->drawImageLayer(&painter, imageLayer);
}
painter.translate(-offset);
}
map.reset();
// Save image
QImageWriter imageWriter(imageFileName);
if (!imageWriter.canWrite())
imageWriter.setFormat("png");
if (!imageWriter.write(image)) {
qWarning("Error while writing \"%s\": %s",
qUtf8Printable(imageFileName),
qUtf8Printable(imageWriter.errorString()));
return 1;
//.........这里部分代码省略.........
示例13: minimumSizeHint
QSize DotLabel::minimumSizeHint() const {
QSize s = QLabel::minimumSizeHint();
s.setWidth(-1);
return s;
}
示例14: updateMetadata
void DirectShowMetaDataControl::updateMetadata(IFilterGraph2 *graph, IBaseFilter *source, const QString &fileSrc)
{
m_metadata.clear();
#ifndef QT_NO_SHELLITEM
if (!sHCreateItemFromParsingName) {
QSystemLibrary lib(QStringLiteral("shell32"));
sHCreateItemFromParsingName = (q_SHCreateItemFromParsingName)(lib.resolve("SHCreateItemFromParsingName"));
}
if (!fileSrc.isEmpty() && sHCreateItemFromParsingName) {
IShellItem2* shellItem = 0;
if (sHCreateItemFromParsingName(reinterpret_cast<const WCHAR*>(fileSrc.utf16()),
0, IID_PPV_ARGS(&shellItem)) == S_OK) {
IPropertyStore *pStore = 0;
if (shellItem->GetPropertyStore(GPS_DEFAULT, IID_PPV_ARGS(&pStore)) == S_OK) {
DWORD cProps;
if (SUCCEEDED(pStore->GetCount(&cProps))) {
for (DWORD i = 0; i < cProps; ++i)
{
PROPERTYKEY key;
PROPVARIANT var;
PropVariantInit(&var);
if (FAILED(pStore->GetAt(i, &key)))
continue;
if (FAILED(pStore->GetValue(key, &var)))
continue;
if (IsEqualPropertyKey(key, PKEY_Author)) {
m_metadata.insert(QMediaMetaData::Author, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Title)) {
m_metadata.insert(QMediaMetaData::Title, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Media_SubTitle)) {
m_metadata.insert(QMediaMetaData::SubTitle, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_ParentalRating)) {
m_metadata.insert(QMediaMetaData::ParentalRating, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Comment)) {
m_metadata.insert(QMediaMetaData::Description, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Copyright)) {
m_metadata.insert(QMediaMetaData::Copyright, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Media_ProviderStyle)) {
m_metadata.insert(QMediaMetaData::Genre, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Media_Year)) {
m_metadata.insert(QMediaMetaData::Year, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Media_DateEncoded)) {
m_metadata.insert(QMediaMetaData::Date, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Rating)) {
m_metadata.insert(QMediaMetaData::UserRating,
int((convertValue(var).toUInt() - 1) / qreal(98) * 100));
} else if (IsEqualPropertyKey(key, PKEY_Keywords)) {
m_metadata.insert(QMediaMetaData::Keywords, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Language)) {
m_metadata.insert(QMediaMetaData::Language, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Media_Publisher)) {
m_metadata.insert(QMediaMetaData::Publisher, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Media_Duration)) {
m_metadata.insert(QMediaMetaData::Duration,
(convertValue(var).toLongLong() + 10000) / 10000);
} else if (IsEqualPropertyKey(key, PKEY_Audio_EncodingBitrate)) {
m_metadata.insert(QMediaMetaData::AudioBitRate, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Media_AverageLevel)) {
m_metadata.insert(QMediaMetaData::AverageLevel, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Audio_ChannelCount)) {
m_metadata.insert(QMediaMetaData::ChannelCount, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Audio_PeakValue)) {
m_metadata.insert(QMediaMetaData::PeakValue, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Audio_SampleRate)) {
m_metadata.insert(QMediaMetaData::SampleRate, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Music_AlbumTitle)) {
m_metadata.insert(QMediaMetaData::AlbumTitle, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Music_AlbumArtist)) {
m_metadata.insert(QMediaMetaData::AlbumArtist, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Music_Artist)) {
m_metadata.insert(QMediaMetaData::ContributingArtist, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Music_Composer)) {
m_metadata.insert(QMediaMetaData::Composer, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Music_Conductor)) {
m_metadata.insert(QMediaMetaData::Conductor, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Music_Lyrics)) {
m_metadata.insert(QMediaMetaData::Lyrics, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Music_Mood)) {
m_metadata.insert(QMediaMetaData::Mood, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Music_TrackNumber)) {
m_metadata.insert(QMediaMetaData::TrackNumber, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Music_Genre)) {
m_metadata.insert(QMediaMetaData::Genre, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_ThumbnailStream)) {
m_metadata.insert(QMediaMetaData::ThumbnailImage, convertValue(var));
} else if (IsEqualPropertyKey(key, PKEY_Video_FrameHeight)) {
QSize res;
res.setHeight(convertValue(var).toUInt());
if (SUCCEEDED(pStore->GetValue(PKEY_Video_FrameWidth, &var)))
res.setWidth(convertValue(var).toUInt());
m_metadata.insert(QMediaMetaData::Resolution, res);
} else if (IsEqualPropertyKey(key, PKEY_Video_HorizontalAspectRatio)) {
QSize aspectRatio;
aspectRatio.setWidth(convertValue(var).toUInt());
if (SUCCEEDED(pStore->GetValue(PKEY_Video_VerticalAspectRatio, &var)))
aspectRatio.setHeight(convertValue(var).toUInt());
//.........这里部分代码省略.........
示例15: getEulerAngles
//Gets the current predicted angles from the oculus sensors
void OculusManager::getEulerAngles(float& yaw, float& pitch, float& roll) {
#ifdef HAVE_LIBOVR
#if defined(__APPLE__) || defined(_WIN32)
ovrTrackingState ts = ovrHmd_GetTrackingState(_ovrHmd, ovr_GetTimeInSeconds());
#else
ovrSensorState ss = ovrHmd_GetSensorState(_ovrHmd, _hmdFrameTiming.ScanoutMidpointSeconds);
#endif
#if defined(__APPLE__) || defined(_WIN32)
if (ts.StatusFlags & (ovrStatus_OrientationTracked | ovrStatus_PositionTracked)) {
#else
if (ss.StatusFlags & (ovrStatus_OrientationTracked | ovrStatus_PositionTracked)) {
#endif
#if defined(__APPLE__) || defined(_WIN32)
ovrPosef headPose = ts.HeadPose.ThePose;
#else
ovrPosef headPose = ss.Predicted.Pose;
#endif
Quatf orientation = Quatf(headPose.Orientation);
orientation.GetEulerAngles<Axis_Y, Axis_X, Axis_Z, Rotate_CCW, Handed_R>(&yaw, &pitch, &roll);
} else {
yaw = 0.0f;
pitch = 0.0f;
roll = 0.0f;
}
#else
yaw = 0.0f;
pitch = 0.0f;
roll = 0.0f;
#endif
}
glm::vec3 OculusManager::getRelativePosition() {
#if (defined(__APPLE__) || defined(_WIN32)) && HAVE_LIBOVR
ovrTrackingState trackingState = ovrHmd_GetTrackingState(_ovrHmd, ovr_GetTimeInSeconds());
ovrVector3f headPosition = trackingState.HeadPose.ThePose.Position;
return glm::vec3(headPosition.x, headPosition.y, headPosition.z);
#else
// no positional tracking in Linux yet
return glm::vec3(0.0f, 0.0f, 0.0f);
#endif
}
//Used to set the size of the glow framebuffers
QSize OculusManager::getRenderTargetSize() {
#ifdef HAVE_LIBOVR
QSize rv;
rv.setWidth(_renderTargetSize.w);
rv.setHeight(_renderTargetSize.h);
return rv;
#else
return QSize(100, 100);
#endif
}
void OculusManager::overrideOffAxisFrustum(float& left, float& right, float& bottom, float& top, float& nearVal,
float& farVal, glm::vec4& nearClipPlane, glm::vec4& farClipPlane) {
#ifdef HAVE_LIBOVR
if (_activeEyeIndex != -1) {
const ovrFovPort& port = _eyeFov[_activeEyeIndex];
right = nearVal * port.RightTan;
left = -nearVal * port.LeftTan;
top = nearVal * port.UpTan;
bottom = -nearVal * port.DownTan;
}
#endif
}