Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Evgeniya от Июль 09, 2009, 11:06



Название: как в QTableView задать ширину заголовка
Отправлено: Evgeniya от Июль 09, 2009, 11:06
Добрый день!!!!
Подскажите пожалуйста как можно в QTableView задать ширину заголовка...
Я так полагаю через QHeaderView, но не могу найти соответствующую функцию...


Название: Re: как в QTableView задать ширину заголовка
Отправлено: Rcus от Июль 09, 2009, 11:40
void QHeaderView::resizeSection ( int logicalIndex, int size )
/* reading roxx */


Название: Re: как в QTableView задать ширину заголовка
Отправлено: Evgeniya от Июль 09, 2009, 12:16
С помощью этой функции задается ширина строчек
Например, ui.tableLS->verticalHeader()->resizeSection(0,50); - ширина первой строки
А мне нужно задать ширину самой шапки таблицы...просто длинные названия столбцов и растягивать в длину не вариант


Название: Re: как в QTableView задать ширину заголовка
Отправлено: pastor от Июль 09, 2009, 12:26
С помощью этой функции задается ширина строчек
Например, ui.tableLS->verticalHeader()->resizeSection(0,50); - ширина первой строки

Что-то мне так кажется, что это высота строки, а не её ширина :) Для задания ширины колонки используй

ui.tableLS->horizontalHeader()->resizeSection(0,50); - ширина первой колонки


Название: Re: как в QTableView задать ширину заголовка
Отправлено: Evgeniya от Июль 09, 2009, 12:32

Что-то мне так кажется, что это высота строки, а не её ширина :)
пардон, это действительно высота :)))
только мне надо высоту шапки таблицы изменить...


Название: Re: как в QTableView задать ширину заголовка
Отправлено: Rcus от Июль 09, 2009, 12:53
ну есть setFixedHeight, только без переноса слов в нем нет смысла.


Название: Re: как в QTableView задать ширину заголовка
Отправлено: Evgeniya от Июль 09, 2009, 13:13
ну есть setFixedHeight, только без переноса слов в нем нет смысла.

Спасибочки!!!
А как слова переносить?А то действительно смысла нет :)


Название: Re: как в QTableView задать ширину заголовка
Отправлено: Evgeniya от Июль 09, 2009, 14:29
неужели там все сложно с переносом слов :-( ... чет не могу найти как это сделать


Название: Re: как в QTableView задать ширину заголовка
Отправлено: pastor от Июль 09, 2009, 15:39
Перенос нужно писать самому. Ничего сложного в этом нет. Можно даже подсмотреть в исходники QLabel, как сделано там


Название: Re: как в QTableView задать ширину заголовка
Отправлено: Evgeniya от Июль 09, 2009, 21:47
Чего-то не получается у меня...может я не так понимаю...
Написала в QLabel  Предельная розничная
                               торговая надбавка
Посмотрела в исходнике, там вон как все:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">\n<html><head><meta name="qrichtext" content="1" /><style type="text/css">\np, li { white-space: pre-wrap; }\n</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;">\n<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:8pt;">Предельная розничная </span></p>\n<p align="center" style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;">торговая надбавка</p></body></html>

И что же мне вставить в заголовок QTable чтобы получилась аналогичная строчка


Название: Re: как в QTableView задать ширину заголовка
Отправлено: Evgeniya от Июль 09, 2009, 22:24
Все намного проще чем думалось как всегда  ;D
 model->setHeaderData(1,Qt::Horizontal,"Предельная оптовая\n торговая надбавка");


Название: Re: как в QTableView задать ширину заголовка
Отправлено: pastor от Июль 09, 2009, 22:58
А я подумал, что нужен автоперенос (например при изменении ширины столбца)


Название: Re: как в QTableView задать ширину заголовка
Отправлено: Evgeniya от Июль 21, 2009, 15:38
А можно еще один вопросик по этому поводу...
Подскажите пожалуйста, как сделать, чтобы текст в столбце таблицы был выровнен по центру....
ui.tableView->verticalHeader()->setDefaultAlignment(Qt::AlignCenter) выравнивает по центру только самый первый столбец, где нумеруются строки. Или вообще это возожно сделать??


Название: Re: как в QTableView задать ширину заголовка
Отправлено: uriel от Июль 21, 2009, 16:20
Один из вариантов - переопределить в модели метод data().
Код
C++ (Qt)
QVariant SomeModel::data(const QModelIndex &index, int role) {
   if (role == Qt::TextAlignmentRole && index.column() == 1) // просто как вариант
       return Qt::AlignCenter;
   else
       return SomeModelParentClass::data(index, role);
}


Название: Re: как в QTableView задать ширину заголовка
Отправлено: Evgeniya от Июль 21, 2009, 16:46
Один из вариантов - переопределить в модели метод data().
Код
C++ (Qt)
QVariant SomeModel::data(const QModelIndex &index, int role) {
   if (role == Qt::TextAlignmentRole && index.column() == 1) // просто как вариант
       return Qt::AlignCenter;
   else
       return SomeModelParentClass::data(index, role);
}
Спасибочки!!!Вроде сам смысл поняла...только вот SomeModel и SomeModelParentClass это что???Или это нужно будет создать свой класс можели, унаследованный от QSqlQueryModel???


Название: Re: как в QTableView задать ширину заголовка
Отправлено: uriel от Июль 21, 2009, 17:06
Ну да. Чтобы переопределить поведение базового класса мы наследуемся и замещаем метод. Потом при определённых условиях делаем то, что нужно, а иначе просто передаём эту обязанность обратно базовому классу.


Название: Re: как в QTableView задать ширину заголовка
Отправлено: Evgeniya от Июль 22, 2009, 07:54
А чтобы мне редактировать данные БД прям в QTableView, что мне для этого нужно???подскажите пожалуйста...


Название: Re: как в QTableView задать ширину заголовка
Отправлено: uriel от Июль 22, 2009, 09:59
С QSqlTableModel Вы и так можете их редактировать. В ассистенте есть пример.
Код
C++ (Qt)
QSqlTableModel *model = new QSqlTableModel;
model->setTable("employee");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
model->removeColumn(0); // don't show the ID
model->setHeaderData(0, Qt::Horizontal, tr("Name"));
model->setHeaderData(1, Qt::Horizontal, tr("Salary"));
 
QTableView *view = new QTableView;
view->setModel(model);
view->show();


Название: Re: как в QTableView задать ширину заголовка
Отправлено: Evgeniya от Июль 22, 2009, 15:45
Я уже с этим разбралась...у меня просто QSqlQueryModel, а не QSqlTableModel
только вот один вопрос остается нерешенным..Редактировать я могу только при двойном нажатии на ячейку, а я хочу, чтобы при двойном нажатии не редактировалось, а редоктировалось, например при нажатии кнопки QPushButton и как так можно сделать???


Название: Re: как в QTableView задать ширину заголовка
Отправлено: linuxevolution от Август 03, 2009, 13:57
У меня такой вопрос возник, можно ли задать ширину столбца в процентном соотношении, или проще написать свою функцию которая будет вычислять размер каждого столбца относительно размера окна? Т.е. имеется ввиду если окно принимает развернутый вид, то и ширина столбцов в процентном соотношении с размером окна растягивается. Все сводится к тому чтобы неоставлять пустое место с правой стороны таблицы(не красиво получается). Или можно оставить в начальном положении как есть, а потом при определенном размере окна, когда пользователь растягивает окно, начать вычисление. Как правильней сделать?


Название: Re: как в QTableView задать ширину заголовка
Отправлено: spectre71 от Август 03, 2009, 20:59
У меня такой вопрос возник, можно ли задать ширину столбца в процентном соотношении, или проще написать свою функцию которая будет вычислять размер каждого столбца относительно размера окна? Т.е. имеется ввиду если окно принимает развернутый вид, то и ширина столбцов в процентном соотношении с размером окна растягивается. Все сводится к тому чтобы неоставлять пустое место с правой стороны таблицы(не красиво получается). Или можно оставить в начальном положении как есть, а потом при определенном размере окна, когда пользователь растягивает окно, начать вычисление. Как правильней сделать?
Писать самому.


Название: Re: как в QTableView задать ширину заголовка
Отправлено: Кутенок от Февраль 04, 2010, 22:05
У меня такой вопрос возник, можно ли задать ширину столбца в процентном соотношении, или проще написать свою функцию которая будет вычислять размер каждого столбца относительно размера окна? Т.е. имеется ввиду если окно принимает развернутый вид, то и ширина столбцов в процентном соотношении с размером окна растягивается. Все сводится к тому чтобы неоставлять пустое место с правой стороны таблицы(не красиво получается). Или можно оставить в начальном положении как есть, а потом при определенном размере окна, когда пользователь растягивает окно, начать вычисление. Как правильней сделать?
ui->myTabWidget->horizontalHeader()->setResizeMode(QHeaderView::Stretch);