crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Изменение высоты и ширины ячеек.
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 4.2.2010, 17:59
  По моему Antrix, уже решил проблему. почти год назад
Кристина Дата 4.2.2010, 15:28
 
Цитата(Antrix @ 14.3.2009, 18:38) *
Есть табличка с 2 столбцами и 64к строк. Нужно задать высоту ячеек, например, на 17, ширину на 34.
Пробывал делать так:
QTableView* t = new QTableView();
t->resizeColumnsToContents();
//или так:
for (int i = 0; i < N; i++) //N = 64000
t->horizontalHeader()->resizeSection(i, 17);
Оба варианта слишком медлительны. Как можно ускорить этот процес? Текс во всех ячейках одинаковой длины - 4 символа.


к примеру делаешь наследника от делегата
и переопределяешь в неи метод sizeHint
к примеру так
virtual QSize sizeHint( const QStyleOptionViewItem &option, const QModelIndex &index ) const
    {
        return QSize( 63, 63 );
    }
Litkevich Yuriy Дата 15.3.2009, 20:23
  см. слоты у QTableView там четыре штуки, два для строк, два для столбцов
anonymous Дата 15.3.2009, 20:14
 
Цитата(Litkevich Yuriy @ 15.3.2009, 16:30) *
QString str = "first line\nsecond line";
и получал двестрочки.


Скажите, а есть ли какой-нибудь параметр чтобы ячейки сами расширялись показываю что в них написано, без задания конкретных значений ширины???
Интересует именно расширение вниз по ширине.
Litkevich Yuriy Дата 15.3.2009, 16:30
 
Цитата(Гость_anonymous_* @ 15.3.2009, 18:26) *
можно было помещать многострочный текст??
Или чтобы он хотя бы отображался таковым??
я делал так:
QString str = "first line\nsecond line";
и получал двестрочки.
BRE Дата 15.3.2009, 15:40
 
Цитата(anonymous @ 15.3.2009, 15:26) *
Околотемный вопрос, скажите а можно ли сделать так чтобы в ячейке QTableWidget можно было помещать многострочный текст??
Или чтобы он хотя бы отображался таковым??

Делегаты наше Фсе! Переопределяй paint и рисуй хоть по диагонале. :)
anonymous Дата 15.3.2009, 15:26
  Околотемный вопрос, скажите а можно ли сделать так чтобы в ячейке QTableWidget можно было помещать многострочный текст??
Или чтобы он хотя бы отображался таковым??
Antrix Дата 15.3.2009, 14:57
  BRE спасибо за пример :clapping: . Но все-равно очень долго получается изминение размеров ячеек.
По всей видимости, единственый путь, делать так.
QTableView* t = new QTableView();
t->horizontalHeader()->setDefaultSectionSize(34);
t->verticalHeader()->setDefaultSectionSize(17);
Работает многновенно.
BRE Дата 14.3.2009, 22:18
 
Цитата(BRE @ 14.3.2009, 21:19) *
Поглядим.


main.cpp

#include <QApplication>
#include <QStandardItemModel>
#include <QTableView>
#include <QHeaderView>
#include "CItemDelegate.h"

int main( int argc, char *argv[] )
{
        QApplication app( argc, argv );

        QStandardItemModel model( 4, 2 );
        for( int row = 0; row < 4; ++row )
        {
                for( int column = 0; column < 2; ++column )
                {
                        QModelIndex index = model.index( row, column, QModelIndex() );
                        model.setData( index, QVariant( (row+1) * (column+1) ) );
                }
        }

        QTableView tableView;

        CItemDelegate delegate( &tableView );
        tableView.setItemDelegate( &delegate );

        tableView.setModel( &model );
        tableView.resizeColumnsToContents();
        tableView.resizeRowsToContents();

        tableView.show();

        return app.exec();
}

Stanislaus Дата 14.3.2009, 21:59
  Нужно переопределить класс модели, которую ты используешь в QTableView. А именно, переопределить метод QAbstractItemModel::data(), для роли Qt::SizeHint. Так же можно попробовать воспользоваться setData(), но не думаю, что этот вариан будет очень быстрым.
После популяции view, нужно выполнить view->resizeRowsToContents() и view->resizeColumnsToContents(), чтобы был учтен size hint.
Где-то тут в статьях был очень хороший мануал, как эффективно использовать Model/View фреймворк. Не могу найти, к сожалению.
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 10.7.2025, 23:12