2017-09-29 6 views
0

コンストラクタ:QScrollAreaにウィジェットを配置する方法は?

ScrollArea::ScrollArea(...) 
{ 
    ... 
    end = myItems.count(); 
    for(int i=0; i<end; i++) 
    { 
     scrollItems.append(new ScrollItem(myItems.at(i), 0, width, i, this)); 
    } 
    scrollArea->setWidget(this); //must be last for auto-scrolling to work 
} 

メンバ関数:

enter image description here

私はそれが次のようになりたい:

void ScrollArea::updateSelection(int selection) 
{ 
    foreach(ScrollItem* item, scrollItems) 
    { 
     if(item->updateSelection(selection, 0)) 
     { 
      scrollArea->ensureWidgetVisible(item); 
     } 
    } 
} 

ScrollArea::updateSelectionを実行した後、それはこのようになります

enter image description here

Googleは誤ったタイトルの質問(私が言うことができる限り:Place widget in center of QScrollArea)とジャンクの束を返します。 QScrollArea::ensureWidgetVisibleも明示的なマージンで、動作しない理由を

答えて

0

はまだわかりませんが、私はない何かが見つかりました:だから私は基本的にブルート強制的に私が代わりに有していると何をしたいんだ

void ScrollArea::updateSelection(int selection) 
{ 
    int item = -1; 

    int i = scrollItems.count(); 
    while(i) 
    { 
     i--; 
     if(scrollItems.at(i)->updateSelection(selection, 0)) 
     { 
      item = i; 
     } 
    } 

    if(item < 0) 
    { 
     return; 
    } 

    i = scrollItems.first()->height(); 
    item *= i; 
    item += i/2; 
    //item is now the position that should be centered 

    scrollArea->verticalScrollBar()->setValue(
       item - (scrollArea->height()/2) 
       ); 
} 

をライブラリそれを行う。 (そして失敗します)

+0

'verticalScrollBar() - > setValue'を使ってうれしく思います。 – AlexanderVX

関連する問題