Russian Qt Forum
Ноябрь 25, 2024, 13:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Qt 4.1 QTableView караул...  (Прочитано 15408 раз)
Makc
Гость
« : Февраль 03, 2006, 15:28 »

Излазил все доки, проглядел все глаза, не пойму как изменить высоту строк, что бы они не были такими безумно "толстыми". Неужели не поддерживается сортировка по клику на хедере? После .NET это кажется слегка диковатым. Помогите, кто может...
Записан
crocus
Гость
« Ответ #1 : Февраль 03, 2006, 17:56 »

Цитировать

не пойму как изменить высоту строк, что бы они не были такими безумно "толстыми"

1.void QTableView::resizeColumnsToContents ()  [slot]
Resizes all columns based on the size hints of the delegate used to render each item in the columns.
void QTableView::resizeRowToContents ( int row )  [slot]
2.Нет
Записан
Makc
Гость
« Ответ #2 : Февраль 03, 2006, 20:19 »

Цитата: "crocus"
Цитировать

не пойму как изменить высоту строк, что бы они не были такими безумно "толстыми"

1.void QTableView::resizeColumnsToContents ()  [slot]
Resizes all columns based on the size hints of the delegate used to render each item in the columns.
void QTableView::resizeRowToContents ( int row )  [slot]
2.Нет


Я обратил внимание на  функцию QTableView::resizeRowToContents ( int row ), и даже в цикле пргнал по всем строкам, но подумал, что это скорее всего изврат, ведь должно же быть что-то логичнее и прще. Но все равно спасибо за ответ.

добавлено спустя 6 минут:

 Так что же делать, если хочется отобразить данные ПОЧЕЛОВЕЧЕСКИ.
Или в QT это невозможно? Использовать сторонние ActivX?  Я уже молчу про всякие там master-detail и прочие новороты, но хотя бы сортировку по возрастанию-убыванию значения столбца ведь можно было предусмотреть, БЛИН Грустный
Записан
Steven_Orko
Гость
« Ответ #3 : Февраль 04, 2006, 00:52 »

А ты обработай клик на заголовке столбца и вызови для него функцию сортировки
Записан
crocus
Гость
« Ответ #4 : Февраль 05, 2006, 04:58 »

1.void QTableView::resizeColumnsToContents () [slot]
void QTableView::resizeRowsToContents () [slot]
Записан
Makc
Гость
« Ответ #5 : Февраль 06, 2006, 09:03 »

Цитата: "crocus"
1.void QTableView::resizeColumnsToContents () [slot]
void QTableView::resizeRowsToContents () [slot]


function resizeRowToContents does not take 0 arguments Улыбающийся
Записан
crocus
Гость
« Ответ #6 : Февраль 06, 2006, 09:27 »

Qt4.1.0
1.void QTableView::resizeColumnsToContents () [slot]
void QTableView::resizeRowsToContents () [slot]
Код:
void MainWindow::setFontSize(int size)
{

    fontSize = size;
    QFont serifFont("MS Shell Dlg", fontSize);
    this->setFont(serifFont);
    tableView->resizeColumnsToContents();
    tableView->resizeRowsToContents();

}
Записан
nEoN
Гость
« Ответ #7 : Февраль 06, 2006, 09:57 »

Цитата: "Makc"
Излазил все доки, проглядел все глаза, не пойму как изменить высоту строк, что бы они не были такими безумно "толстыми". Неужели не поддерживается сортировка по клику на хедере? После .NET это кажется слегка диковатым. Помогите, кто может...

По поводу высоты строк - в Qt 4.1.0 появилось полезная функция setDefaultSectionSize(...), задаёт начальный размер секций (v|h)header'a.
Код:

// Например :
tableView->verticalHeader()->setDefaultSectionSize(24);
Записан
oktogen
Гость
« Ответ #8 : Февраль 11, 2006, 22:15 »

Цитировать

А ты обработай клик на заголовке столбца и вызови для него функцию сортировки

а МОЖНО ПОПОДРОБНЕЕ как ловить клик по хедеру?
QT4.0, QTableView.
Записан
Denis
Гость
« Ответ #9 : Февраль 14, 2006, 22:46 »

В окне реализуешь слот sectionClicked(int)
и коннектишь заголовок таблицы

connect( tableView->horizontalHeader(), SIGNAL(sectionClicked (int)), this, SLOT(sectionClicked(int)));
Записан
Steven_Orko
Гость
« Ответ #10 : Февраль 15, 2006, 01:53 »

Цитата: "Denis"
В окне реализуешь слот sectionClicked(int)
и коннектишь заголовок таблицы

connect( tableView->horizontalHeader(), SIGNAL(sectionClicked (int)), this, SLOT(sectionClicked(int)));

Только с приведением типа. В соседней ветке тоже самое.
Код:
connect((QObject*) tableView->horizontalHeader(), SIGNAL(sectionClicked (int)), this, SLOT(sectionClicked(int)));
Записан
Denis
Гость
« Ответ #11 : Февраль 15, 2006, 14:15 »

Приведение совершенно не нужно - QHeaderView является потомком QObject.

В соседней ветке про необходимость каста написана какая-то ерунда - там очевидно были проблемы неполной перекомпиляции.
Записан
oktogen
Гость
« Ответ #12 : Февраль 15, 2006, 15:54 »

Denis
Нужно оказывается.
Если не привести, вываливается ошибка коннекта.
Может, дело в том,  что у меня 4.0 а не 4.1?
Записан
Steven_Orko
Гость
« Ответ #13 : Февраль 15, 2006, 17:13 »

Цитата: "oktogen"
Denis
Нужно оказывается.
Если не привести, вываливается ошибка коннекта.
Может, дело в том,  что у меня 4.0 а не 4.1?

 Я точно скажу, что это нужно и в 4.1. Хотя сам удивлен, почему? Ведь это потомок QObject...
Записан
Denis
Гость
« Ответ #14 : Февраль 15, 2006, 17:52 »

В 4.1/Win32/MSVC однозначно не нужно - никакой ошибки нет и оно работает. Я проверил прежде чем писать.

В 4.0/Win32/MSVC тоже.

добавлено спустя:

 В 4.1(opensource)/Linux/Gcc тоже все работает без кастов.

добавлено спустя 3 минуты:

 QT/examples/itemviews/chart:

mainwindow.cpp
-------------------

(line 71):    connect(table->horizontalHeader(), SIGNAL(sectionClicked(int)),   this, SLOT(sectionClicked(int)));

(appended to file)

void MainWindow::sectionClicked(int idx)
{
        statusBar()->showMessage(tr("Clicked column %1").arg(idx), 2000);    
}

--------------------------------------------

mainwindow.h

(line 41)    void sectionClicked(int);

--------------------------------------------
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.109 секунд. Запросов: 20.