1

さて、私は Qt の初心者で、問題があります。

UI に 7 つの項目を持つ QListWidget があり、4 つの項目だけが表示され、スクロールバーを使用した後に他の項目が表示されます。QListWidet の上と下に矢印の画像を表示したいのですが、スクロールする項目がより多く表示されます。

わかりました、アイテムが隠されているかどうかを確認できますが、setHidden() 関数によって隠されている場合のみです。そして、スクロールによって隠されるのはいつですか?実行時にこれを見ることはできますか? アイテムはあるのにスクロールで隠れてしまうからですよね?

ここでこれに関するいくつかの投稿を検索しましたが、見つかりませんでした。私の英語で申し訳ありませんが、混乱しているかもしれませんが、誰かが私を助けることができれば...

どうもありがとう!

4

1 に答える 1

0

したがって、これを行う方法の基本的な例を次に示します。まず、MainWindow クラスの実装のリストを次に示します。

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)

{

ui->setupUi(this);

QListWidget *listW = new QListWidget;
//Add some items
for(int i = 0; i < 20; i++) {
    QListWidgetItem *item = new QListWidgetItem("Item" + QString::number(i));
    listW->addItem(item);
}

listW->setVerticalScrollMode(QAbstractItemView::ScrollPerItem);
listW->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
//Set reimplemented scroll bar
listW->setVerticalScrollBar(new ScrollBar);
setCentralWidget(listW);

}

コードからわかるように、スクロール バー ポリシーを Qt::ScrollBarAsNeeded に設定しました。そうすることで、スクロールバーからの表示/非表示イベントに反応できるという事実を利用できます。QScrollBar の再実装は次のとおりです。

ScrollBar::ScrollBar(QWidget *parent) :
QScrollBar(parent)
{
}


void ScrollBar::hideEvent(QHideEvent *e) 
{
  emit showTip(false);
}


void ScrollBar::showEvent(QShowEvent *e) 
{
  emit showTip(true);
}

これで、ScrollBar からの showTip(bool) 信号を、画像を描画するスロットに接続できます。

于 2012-01-24T18:58:12.310 に答える