2014-02-12 2 views
0

Я знаю, что есть похожие вопросы, но ни одно из них не имеет решения. Документация Qt указывает это для QAbstractScrollArea :: setViewportMargins():Как создать замороженную строку нижнего колонтитула в QTableView

«Устанавливает поля вокруг области прокрутки влево, вверху, вправо и снизу. Это полезно для приложений, таких как электронные таблицы с« заблокированными »строками и столбцами. Обратите внимание, что эту функцию часто вызывают QTreeView и QTableView, поэтому поля должны быть реализованы подклассами QAbstractScrollArea. Кроме того, если подклассы должны использоваться в представлениях элементов, они не должны вызывать эту функцию. По умолчанию все поля равны нулю. "

Мне удалось создать пространство для замороженной строки, вызвав setViewportMargins, но я не могу понять, как разместить элемент управления в этом пространстве. Кто-нибудь знает как это сделать?

ответ

0

Вы должны изучить code editor example.

В основном вы просто размещаете виджет над краем области просмотра. Вы также должны изменить размер своего виджета, когда вы измените размер объекта QTableView. Это, конечно, сделано в resize event вашего объекта QTableView.

Это, как это делается в примере:

void CodeEditor::resizeEvent(QResizeEvent *e) 
{ 
    QPlainTextEdit::resizeEvent(e); 

    QRect cr = contentsRect(); 
    lineNumberArea->setGeometry(QRect(cr.left(), cr.top(), lineNumberAreaWidth(), cr.height())); 
} 
+0

Спасибо, все, что мне нужно было сделать вызов setGeometry – Alex

Смежные вопросы