本文整理汇总了C++中QWidget::isHidden方法的典型用法代码示例。如果您正苦于以下问题:C++ QWidget::isHidden方法的具体用法?C++ QWidget::isHidden怎么用?C++ QWidget::isHidden使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QWidget
的用法示例。
在下文中一共展示了QWidget::isHidden方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setGeometry
void StatusBarLayout::setGeometry( const QRect& _rect )
{
QLayout::setGeometry( _rect );
if( mIsDirty )
updateLayoutStructs();
QRect rect( 0, 0, _rect.width(), _rect.height() );
const int margin = 0;//this->margin();
const int spacing = this->spacing();
int availableWidth = rect.size().width() - 2*margin;
const int availableHeight = rect.size().height() - 2*margin;
int usedWidth = 0;
int visibleCount = 0;
int i;
for( i = 0; i<mWidgetList.count(); ++i )
{
QWidgetItem* item = mWidgetList.at( i );
QWidget* widget = item->widget();
// TODO: is there really no way to get to the geometry data if a widget is hidden?
if( widget->isHidden() )
widget->show();
const int itemWidth = item->sizeHint().width();
const int itemSpacing = ( visibleCount == 0 ) ? 0 : spacing;
const int newUsedWidth = usedWidth + itemSpacing + itemWidth;
// kDebug()<<widget<<<<availableWidth<<usedWidth<<itemWidth<<itemSpacing<<newUsedWidth;
const bool isTooWide = ( newUsedWidth > availableWidth );
if( isTooWide )
break;
const QPoint pos( margin + usedWidth, margin );
const QSize size( itemWidth, availableHeight );
QRect r( pos, size );
r = QStyle::visualRect( parentWidget()->layoutDirection(), rect, r );
item->setGeometry( r );
usedWidth = newUsedWidth;
++visibleCount;
}
// hide the rest if needed
for( ; i<mWidgetList.count(); ++i )
{
QWidgetItem* item = mWidgetList.at( i );
QWidget* widget = item->widget();
if( ! widget->isHidden() )
widget->hide();
}
}
示例2: childAt
/*! \reimp */
int QAccessibleWidget::childAt(int x, int y) const
{
QWidget *w = widget();
if (!w->isVisible())
return -1;
QPoint gp = w->mapToGlobal(QPoint(0, 0));
if (!QRect(gp.x(), gp.y(), w->width(), w->height()).contains(x, y))
return -1;
QWidgetList list = childWidgets(w);
int ccount = childCount();
// a complex child
if (list.size() < ccount) {
for (int i = 1; i <= ccount; ++i) {
if (rect(i).contains(x, y))
return i;
}
return 0;
}
QPoint rp = w->mapFromGlobal(QPoint(x, y));
for (int i = 0; i<list.size(); ++i) {
QWidget *child = list.at(i);
if (!child->isWindow() && !child->isHidden() && child->geometry().contains(rp)) {
return i + 1;
}
}
return 0;
}
示例3: childEvent
void QSplitter::childEvent(QChildEvent *c)
{
Q_D(QSplitter);
if (!c->child()->isWidgetType()) {
if (c->type() == QEvent::ChildAdded && qobject_cast<QLayout *>(c->child()))
qWarning("Adding a QLayout to a QSplitter is not supported.");
return;
}
QWidget *w = static_cast<QWidget*>(c->child());
if (c->added() && !d->blockChildAdd && !w->isWindow() && !d->findWidget(w)) {
d->insertWidget_helper(d->list.count(), w, false);
} else if (c->polished() && !d->blockChildAdd) {
if (isVisible() && !(w->isHidden() && w->testAttribute(Qt::WA_WState_ExplicitShowHide)))
w->show();
} else if (c->type() == QEvent::ChildRemoved) {
for (int i = 0; i < d->list.size(); ++i) {
QSplitterLayoutStruct *s = d->list.at(i);
if (s->widget == w) {
d->list.removeAt(i);
delete s;
d->recalc(isVisible());
return;
}
}
}
}
示例4: setCurrentIndex
void TabWidget::setCurrentIndex(int tabIndex)
{
QWidget *w = currentWidget();
const int current = (isTreeModeEnabled() && w != NULL && w->isHidden()) ? -1 : currentIndex();
if (tabIndex == current)
return;
if (tabIndex != -1) {
m_stackedWidget->setCurrentIndex(tabIndex);
w = currentWidget();
if (w == NULL)
return;
w->show();
if (isTreeModeEnabled() ? m_tabTree->hasFocus() : m_tabBar->hasFocus())
w->setFocus();
if ( isTreeModeEnabled() )
m_tabTree->setCurrentTabIndex(tabIndex);
else
m_tabBar->setCurrentIndex(tabIndex);
} else if (w != NULL) {
if (w->hasFocus())
isTreeModeEnabled() ? m_tabTree->setFocus() : m_tabBar->setFocus();
w->hide();
}
emit currentChanged(tabIndex, current);
}
示例5: moveAfter
void QSplitter::moveAfter( int pos, int id, bool upLeft )
{
QSplitterLayoutStruct *s = id < int(data->list.count()) ?
data->list.at(id) : 0;
if ( !s )
return;
QWidget *w = s->wid;
if ( w->isHidden() ) {
moveAfter( pos, id+1, upLeft );
} else if ( pick( w->pos() ) == pos ) {
//No need to do anything if it's already there.
return;
} else if ( s->isSplitter ) {
int dd = s->sizer;
if ( upLeft ) {
setG( w, pos, dd );
moveAfter( pos+dd, id+1, upLeft );
} else {
moveAfter( pos+dd, id+1, upLeft );
setG( w, pos, dd );
}
} else {
int right = pick( w->geometry().bottomRight() );
int dd = right - pos + 1;
dd = QMAX( pick(minSize(w)), QMIN(dd, pick(w->maximumSize())));
int newRight = pos+dd-1;
setG( w, pos, dd );
moveAfter( newRight+1, id+1, upLeft );
}
}
示例6: doMove
void QSplitterPrivate::doMove(bool backwards, int hPos, int index, int delta, bool mayCollapse,
int *positions, int *widths)
{
if (index < 0 || index >= list.count())
return;
#ifdef QSPLITTER_DEBUG
qDebug() << "QSplitterPrivate::doMove" << backwards << hPos << index << delta << mayCollapse;
#endif
QSplitterLayoutStruct *s = list.at(index);
QWidget *w = s->widget;
int nextId = backwards ? index - delta : index + delta;
if (w->isHidden()) {
doMove(backwards, hPos, nextId, delta, collapsible(nextId), positions, widths);
} else {
int hs =s->handle->isHidden() ? 0 : s->getHandleSize(orient);
int ws = backwards ? hPos - pick(s->rect.topLeft())
: pick(s->rect.bottomRight()) - hPos -hs + 1;
if (ws > 0 || (!s->collapsed && !mayCollapse)) {
ws = qMin(ws, pick(w->maximumSize()));
ws = qMax(ws, pick(qSmartMinSize(w)));
} else {
ws = 0;
}
positions[index] = backwards ? hPos - ws : hPos + hs;
widths[index] = ws;
doMove(backwards, backwards ? hPos - ws - hs : hPos + hs + ws, nextId, delta,
collapsible(nextId), positions, widths);
}
}
示例7: moveBefore
void QSplitter::moveBefore( int pos, int id, bool upLeft )
{
QSplitterLayoutStruct *s = data->list.at(id);
if ( !s )
return;
QWidget *w = s->wid;
if ( w->isHidden() ) {
moveBefore( pos, id-1, upLeft );
} else if ( s->isSplitter ) {
int dd = s->sizer;
if ( upLeft ) {
setG( w, pos-dd+1, dd );
moveBefore( pos-dd, id-1, upLeft );
} else {
moveBefore( pos-dd, id-1, upLeft );
setG( w, pos-dd+1, dd );
}
} else {
int left = pick( w->pos() );
int dd = pos - left + 1;
dd = QMAX( pick(minSize(w)), QMIN(dd, pick(w->maximumSize())));
int newLeft = pos-dd+1;
setG( w, newLeft, dd );
if ( left != newLeft )
moveBefore( newLeft-1, id-1, upLeft );
}
}
示例8: onCascade
//===========================================================================
void DiffAnalystWindow::onCascade()
{
// from QWorkspace.cpp
const int xoffset = 13;
const int yoffset = 23;
const int width = 640;
const int height = 480;
int x = 0;
int y = 0;
m_pWs->cascade ();
int numWnd = m_pWs->windowList ().count ();
for (int i = 0; i < numWnd; ++i)
{
QWidget *pWnd = m_pWs->windowList ().at (i);
if (!pWnd->isHidden ())
{
pWnd->showNormal ();
pWnd->parentWidget ()->setGeometry (x, y, width, height);
if ((y + yoffset + height) <= m_pWs->height ())
{
x += xoffset;
y += yoffset;
}
else
{
x = 0;
y = 0;
}
}
}
}
示例9: isHidden
bool QWidgetProto::isHidden() const
{
QWidget *item = qscriptvalue_cast<QWidget*>(thisObject());
if (item)
return item->isHidden();
return false;
}
示例10: doMove
void KompareSplitter::doMove( bool backwards, int pos, int id, int delta,
bool mayCollapse, int* positions, int* widths )
{
QSplitterLayoutStruct *s;
QWidget *w;
for ( ; id >= 0 && id < (int)d->list.count();
id = backwards ? id - delta : id + delta ) {
s = d->list.at( id );
w = s->wid;
if ( w->isHidden() ) {
mayCollapse = TRUE;
} else {
if ( s->isHandle ) {
int dd = s->getSizer( orient );
int nextPos = backwards ? pos - dd : pos + dd;
positions[id] = pos;
widths[id] = dd;
pos = nextPos;
} else {
int dd = backwards ? pos - pick( topLeft(w) )
: pick( bottomRight(w) ) - pos + 1;
if ( dd > 0 || (!isCollapsed(w) && !mayCollapse) ) {
dd = QMAX( pick(qSmartMinSize(w)),
QMIN(dd, pick(w->maximumSize())) );
} else {
dd = 0;
}
positions[id] = backwards ? pos - dd : pos;
widths[id] = dd;
pos = backwards ? pos - dd : pos + dd;
mayCollapse = TRUE;
}
}
}
}
示例11: moveSplitter
void KompareSplitter::moveSplitter( QCOORD p, int id )
{
QSplitterLayoutStruct *s = d->list.at( id );
int farMin;
int min;
int max;
int farMax;
p = adjustPos( p, id, &farMin, &min, &max, &farMax );
int oldP = pick( s->wid->pos() );
int* poss = new int[d->list.count()];
int* ws = new int[d->list.count()];
QWidget *w = 0;
bool upLeft;
if ( QApplication::reverseLayout() && orient == Horizontal ) {
int q = p + s->wid->width();
doMove( FALSE, q, id - 1, -1, (p > max), poss, ws );
doMove( TRUE, q, id, -1, (p < min), poss, ws );
upLeft = (q > oldP);
} else {
doMove( FALSE, p, id, +1, (p > max), poss, ws );
doMove( TRUE, p, id - 1, +1, (p < min), poss, ws );
upLeft = (p < oldP);
}
if ( upLeft ) {
int count = d->list.count();
for ( int id = 0; id < count; ++id ) {
w = d->list.at( id )->wid;
if( !w->isHidden() )
setGeo( w, poss[id], ws[id], TRUE );
}
} else {
for ( int id = d->list.count() - 1; id >= 0; --id ) {
w = d->list.at( id )->wid;
if( !w->isHidden() )
setGeo( w, poss[id], ws[id], TRUE );
}
}
storeSizes();
}
示例12: saveState
void QToolBarAreaLayout::saveState(QDataStream &stream) const
{
// save toolbar state
stream << (uchar) ToolBarStateMarkerEx;
int lineCount = 0;
for (int i = 0; i < QInternal::DockCount; ++i)
lineCount += docks[i].lines.count();
stream << lineCount;
for (int i = 0; i < QInternal::DockCount; ++i) {
const QToolBarAreaLayoutInfo &dock = docks[i];
for (int j = 0; j < dock.lines.count(); ++j) {
const QToolBarAreaLayoutLine &line = dock.lines.at(j);
stream << i << line.toolBarItems.count();
for (int k = 0; k < line.toolBarItems.count(); ++k) {
const QToolBarAreaLayoutItem &item = line.toolBarItems.at(k);
QWidget *widget = const_cast<QLayoutItem*>(item.widgetItem)->widget();
QString objectName = widget->objectName();
if (objectName.isEmpty()) {
qWarning("QMainWindow::saveState(): 'objectName' not set for QToolBar %p '%s'",
widget, widget->windowTitle().toLocal8Bit().constData());
}
stream << objectName;
// we store information as:
// 1st bit: 1 if shown
// 2nd bit: 1 if orientation is vertical (default is horizontal)
uchar shownOrientation = (uchar)!widget->isHidden();
if (QToolBar * tb= qobject_cast<QToolBar*>(widget)) {
if (tb->orientation() == Qt::Vertical)
shownOrientation |= 2;
}
stream << shownOrientation;
stream << item.pos;
//we store the preferred size. If the use rdidn't resize the toolbars it will be -1
stream << item.preferredSize;
uint geom0, geom1;
packRect(&geom0, &geom1, widget->geometry(), widget->isWindow());
stream << geom0 << geom1;
}
}
}
}
示例13: findWidgetJustBeforeOrJustAfter
int QSplitterPrivate::findWidgetJustBeforeOrJustAfter(int index, int delta, int &collapsibleSize) const
{
if (delta < 0)
index += delta;
do {
QWidget *w = list.at(index)->widget;
if (!w->isHidden()) {
if (collapsible(list.at(index)))
collapsibleSize = pick(qSmartMinSize(w));
return index;
}
index += delta;
} while (index >= 0 && index < list.count());
return -1;
}
示例14: sizeHint
/*!
\reimp
*/
QSize QSplitter::sizeHint() const
{
Q_D(const QSplitter);
ensurePolished();
int l = 0;
int t = 0;
for (int i = 0; i < d->list.size(); ++i) {
QWidget *w = d->list.at(i)->widget;
if (w->isHidden())
continue;
QSize s = w->sizeHint();
if (s.isValid()) {
l += d->pick(s);
t = qMax(t, d->trans(s));
}
}
return orientation() == Qt::Horizontal ? QSize(l, t) : QSize(t, l);
}
示例15: showTerminal
void TerminalPlugin::showTerminal()
{
QWidget* dock = w_->parentWidget();
if ( NULL == dock )
return;
if ( dock->isHidden() ) {
dock->show();
w_->setFocus();
}
else {
dock->hide();
// return focus to current document
Juff::Document* doc = api()->currentDocument();
if ( !doc->isNull() )
api()->openDoc(doc->fileName());
}
}