Поиск:

Ответ в темуСоздание новой темы Создание опроса
> редактирование грида 
:(
    Опции темы
gordmiand
Дата 7.6.2010, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



1. Как  программно задать текст для ячейки, находящейся на пересечении столбца и строки заголовков таблицы(серенькие)?
2. Каким образом программно можно узнать/задать текущую ширину столбца (да и любого i-го столбца/строки) заголовков строк таблицы (серый)? Мне это надо знать, так как при изменении текста в какой-либо ячейке данного серого столбца меняется и его ширина, то есть она подстраивается под самую длинную текстовую строку данного столбца, что мне и надо – только вместе с этим автопреобразованием надо поменять ширину всей таблицы..
пояснения на рисунке...

Присоединённый файл ( Кол-во скачиваний: 22 )
Присоединённый файл  ris.jpg 15,39 Kb
PM MAIL   Вверх
gordmiand
Дата 8.6.2010, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



первую проблему "решил"...
неужели нельзя программно поменять размеры столбца (серый) с заголовками для строк? его ширина автоматически меняется в зависимости от длины текста в ячейках данного столбца... подскажите пож-та...
PM MAIL   Вверх
_GRIN_
Дата 21.6.2010, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


одинокий падаван
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 18.11.2007
Где: Калуга

Репутация: 6
Всего: 7



gordmiand
void QTableView::setColumnWidth(int column,int width);
void QTableView::setRowHeight(int row,int height);

Добавлено через 1 минуту и 3 секунды
gordmiand, а как ты решил первую проблему?


--------------------
Дорогу осилит идущий
PM MAIL Skype   Вверх
gordmiand
Дата 21.6.2010, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



GRIN_: интересно и какой же будет индекс у серой колонки заголовков строк:
Код

ui->tableWidget->setColumnWidth(???,100);

то же самое и со строкой заголовков столбцов...
PM MAIL   Вверх
_GRIN_
Дата 21.6.2010, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


одинокий падаван
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 18.11.2007
Где: Калуга

Репутация: 6
Всего: 7



Цитата(gordmiand @  21.6.2010,  18:11 Найти цитируемый пост)
GRIN_: интересно и какой же будет индекс у серой колонки заголовков строк:

извини, я тебя не правильно понял smile, если нужно менять ширину вертикального хидера, или высоту горизонтального хидера, то просто
Код

    table->horizontalHeader()->setFixedHeight(height);
    table->verticalHeader()->setFixedWidth(width);


если это надо делать динамически, то перегружаешь resizeEvent(), где в зависимости от каких-либо условий делаешь тоже самое

Код

void CJournalViewer::resizeEvent(QResizeEvent*event)
{
    QWidget::resizeEvent(event);

    // place your code here.....

    table->horizontalHeader()->setFixedHeight(height);
    table->verticalHeader()->setFixedWidth(width);
}


-------------------------------------
а вот как запихнуть виджет в верхний левый угол, где пересекаются заголовки - я не знаю :(
Пока через перегрузку того же ресайза свой виджет просто рисую по вычесленным координатам поверх таблицы - визуально вроде правильно получается, но имхо - костыль.
Если чё умнее придумал, когда решал - поделись smile

Это сообщение отредактировал(а) _GRIN_ - 21.6.2010, 21:07


--------------------
Дорогу осилит идущий
PM MAIL Skype   Вверх
gordmiand
Дата 21.6.2010, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



_GRIN_: спасибо за информацию по поводу изменения ширины столбца...
но
Код

 ui->tableWidget->verticalHeader()->setFixedWidth(40); 

1. как-то некорректно меняется ширина столбца? как убрать (подравнять с измененной шириной столбца) серый "фон" столбца - см. рис....да и при увеличении (поставь ширину = 120) тоже как-то криво все выглядит...тоже самое начинается и при изменении размеров серой строки...
2. как программно узнать текущую ширину этого серого столбца или строки?
3. resizeEvent - это чей метод или свойство? что и как в нем задавать? поподробнее пож-та...



по поводу вывода текста в ячейку на пересечении заголовков я тоже ничего умнее не придумал, как создать динамический lable с нужным мне текстом и поместить его (примерно) в верхний левый угол грида, пользуясь координатами лейбла (setGeometry)...

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  tabl.JPG 7,42 Kb
PM MAIL   Вверх
SABROG
Дата 22.6.2010, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(gordmiand @  7.6.2010,  19:48 Найти цитируемый пост)
1. Как  программно задать текст для ячейки, находящейся на пересечении столбца и строки заголовков таблицы(серенькие)?


Цитата(gordmiand @  8.6.2010,  19:25 Найти цитируемый пост)
первую проблему "решил"...


Цитата(_GRIN_ @  21.6.2010,  21:04 Найти цитируемый пост)
а вот как запихнуть виджет в верхний левый угол, где пересекаются заголовки - я не знаю :(
Пока через перегрузку того же ресайза свой виджет просто рисую по вычесленным координатам поверх таблицы - визуально вроде правильно получается, но имхо - костыль.


Цитата(gordmiand @  21.6.2010,  21:54 Найти цитируемый пост)
по поводу вывода текста в ячейку на пересечении заголовков я тоже ничего умнее не придумал, как создать динамический lable с нужным мне текстом и поместить его (примерно) в верхний левый угол грида, пользуясь координатами лейбла (setGeometry)... 


В этой теме я удалял QTableCornerButton и ставил вместо него QLabel, это хак, других методов нет.


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
gordmiand
Дата 22.6.2010, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



да бог с этой ячейкой на пересечении заголовков строк и столбцов...
мне теперь главное разобраться как корректно менять(и узнать текущее значение) ширину столбца с заголовками строк и высоту строки с заголовками столбцов:
Код

 table->horizontalHeader()->setFixedHeight(height);
 table->verticalHeader()->setFixedWidth(width);

результат все время кривой в зависимости от величины height, width...например см. рисунок выше...
PM MAIL   Вверх
_GRIN_
Дата 23.6.2010, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


одинокий падаван
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 18.11.2007
Где: Калуга

Репутация: 6
Всего: 7



gordmiand, делается примерно так
Код

//------------------------------------------------------------------
//хидер myWidget.h

class MyWidget : public QWidget
{
.....
private:
    void resizeEvent(QResizeEvent*event); //перегружаем функцию ресайза
.....
private:
    QTableView*m_table;
    QWidget*m_dimention_root_widget; //виджет, от размеров которого выставляем размеры в таблице
}

//------------------------------------------------------------------
//сишник myWidget.cpp

void MyWidget::resizeEvent(QResizeEvent*event) //перегруженная ресайз функция
{
    QWidget::resizeEvent(event); //выполняем ресайз нашего виджета по умолчанию - все дочернии виджеты тоже отресайзятся
    int width = m_dimention_root_widget->width();
    int height = m_dimention_root_widget->height(); 
    m_table->horizontalHeader()->setFixedHeight(height);
    m_table->verticalHeader()->setFixedWidth(width);
}



--------------------
Дорогу осилит идущий
PM MAIL Skype   Вверх
gordmiand
Дата 23.6.2010, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



Код

QWidget*m_dimention_root_widget;
 - "виджет, от размеров которого выставляем размеры в таблице" - это что за виджет и откуда я знаю его размеры (width, height)...
я бы просто хотел поменять ширину/ высоту фиксированного столбца/ строки на конкретное число...при чем тут еще какие-то виджеты?
PM MAIL   Вверх
_GRIN_
Дата 24.6.2010, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


одинокий падаван
**


Профиль
Группа: Участник
Сообщений: 272
Регистрация: 18.11.2007
Где: Калуга

Репутация: 6
Всего: 7



gordmiand, извини, я опять ступил, думал, что ты размеры в таблице подгоняешь под какие-то другие размеры. А раз
Цитата(gordmiand @  23.6.2010,  19:50 Найти цитируемый пост)
поменять ширину/ высоту фиксированного столбца/ строки на конкретное число

тогда всё ещё проще
Код

void MyWidget::resizeEvent(QResizeEvent*event) //перегруженная ресайз функция
{
    QWidget::resizeEvent(event); //выполняем ресайз нашего виджета по умолчанию - все дочернии виджеты тоже отресайзятся
    m_table->horizontalHeader()->setFixedHeight(30); //вместо 30 можешь подставить своё "конкретное число"
    m_table->verticalHeader()->setFixedWidth(40); //вместо 40 можешь подставить своё "конкретное число"
}




--------------------
Дорогу осилит идущий
PM MAIL Skype   Вверх
gordmiand
Дата 27.6.2010, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 772
Регистрация: 15.4.2007

Репутация: нет
Всего: 0



_GRIN_: 
так чей метод 
Код

void resizeEvent(QResizeEvent*event);

надо перегружать - таблицы или кого?
если более предметно - допустим мне надо изменить высоту строки заголовков столбцов:
Код

 ui->tableWidget->horizontalHeader()->setFixedHeight(50);

высота изменится, но как корректно отобразить (изменить) высоту ячеек столбца (левый серый) заголовков строк таблицы? 

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  ris.JPG 7,51 Kb
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0970 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.