Russian Qt Forum
Июля 01, 2025, 08:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Qt 4.1 QTableView караул...  (Прочитано 15908 раз)
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.025 секунд. Запросов: 17.