我有一个长文本的组合框以适合组合框,所以当我下拉时,它们显示为“very_long ... long_text”。将QListView添加到QComboBox以正确显示滚动条
当我这样做:
QAbstractItemView* view = myCombo->view();
view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
的水平滚动出现,但它是无效的和...- s为仍然存在于弦的中间。
这bugreport说,要获得水平滚动条,可以使用自定义QListView。那么我应该如何构造这个自定义的QListView,然后将它添加到组合框中?
我尝试了以下。
QListView* lw = new QListView(0);
QStandardItemModel* model = new QStandardItemModel;
QStandardItem *item = new QStandardItem("long long long long long long long long long long long long text 1");
QStandardItem *item2 = new QStandardItem("long long long long long long long long long long long long text 2");
model->insertRow(0, item);
model->insertRow(1, item2);
lw->setModel(model);
QWidget* test = new QWidget(0);
test->setGeometry(100, 100, 100, 150);
test->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
QGridLayout* layout = new QGridLayout;
test->setLayout(layout);
layout->addWidget(lw);
layout->setSizeConstraint(QLayout::SizeConstraint::SetFixedSize);
test->show();
然后我有我想看的东西(不幸的是我不允许附加图片),那里是滚动条。
但是,当我想它添加到一个组合:
QListView* lw = new QListView(0);
QStandardItemModel* model = new QStandardItemModel;
QStandardItem *item = new QStandardItem("long long long long long long long long long long long long text 1");
QStandardItem *item2 = new QStandardItem("long long long long long long long long long long long long text 2");
model->insertRow(0, item);
model->insertRow(1, item2);
lw->setModel(model);
QWidget* test = new QWidget(0);
test->setWindowTitle("test");
test->setGeometry(100, 100, 100, 150);
test->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
QGridLayout* layout = new QGridLayout;
test->setLayout(layout);
QComboBox* combo = new QComboBox;
combo->setGeometry(0, 0, 80, 20);
combo->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
combo->setView(lw);
layout->addWidget(combo);
layout->setSizeConstraint(QLayout::SizeConstraint::SetFixedSize);
test->show();
然后我得到一个空连击。感谢任何答案。
您应该在调用setView之前添加'combo-> setModel(model);'。这是否解决您的滚动条问题? –
是的,设置它的结果项目正确显示在组合中,但滚动条仍然丢失,尽管额外的行'lw-> setHorizontalScrollBarPolicy(Qt :: ScrollBarAlwaysOn);' – Terrordrone