У меня есть поле со списком с длинными текстами, которые помещаются в поле со списком, поэтому, когда я выпадаю, они отображаются как «very_long...long_text».
Когда я делаю:
QAbstractItemView* view = myCombo->view();
view->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOn );
Появляется горизонтальная полоса прокрутки, но она неактивна, а в середине строк по-прежнему присутствуют ...-s.
В этом отчете об ошибках говорится, что для получения горизонтальной полосы прокрутки можно использовать собственный 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();
Затем я получаю пустую комбинацию. Спасибо за любые ответы.
combo->setModel(model);
перед вызовомsetView
. Решит ли это вашу проблему с полосами прокрутки? - person Pavel Strakhov   schedule 18.11.2014lw->setHorizontalScrollBarPolicy( Qt::ScrollBarAlwaysOn );
- person Terrordrone   schedule 18.11.2014