Russian Qt Forum
Апрель 18, 2024, 13:08
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
>
Изменение стиля QHeaderView в QTableWidget
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Изменение стиля QHeaderView в QTableWidget (Прочитано 11368 раз)
Dimas
Чайник
Offline
Сообщений: 50
Изменение стиля QHeaderView в QTableWidget
«
:
Январь 17, 2012, 10:52 »
Меняю стиль прорисовки таблицы в дизайнере с помощью правки стилей в "Edit Style Sheet".
Пред просмотром (CTRL + ALT + R) получается как мне нужно:
а, при запуске exe получается так:
Вот код стилей:
Цитировать
QTableWidget
{
background-color: rgb(0, 0, 139);
gridline-color: rgb(0, 0, 139);
alternate-background-color: rgb(255, 255, 255);
}
QTableWidget QTableCornerButton::section
{
background-color: rgba(0, 0, 139, 0);
border: 1px outset rgb(0, 0, 139);
}
QHeaderView
{
background-color: rgb(0, 0, 139);
}
QHeaderView::section
{
background-color: rgb(0, 0, 139);
color: rgb(255, 255, 255);
padding-left: 4px;
border:0px outset rgb(0, 0, 0);
}
Из-за чего может не правильно отображаться шапка таблицы?
Тестовый проект прилагаю.
QT 4.5.2. XP
«
Последнее редактирование: Январь 17, 2012, 13:00 от Dimas
»
Записан
qt 4.8.6, qt 5.12.4
Bepec
Гость
Re: Изменение стиля QHeaderView в QTableWidget
«
Ответ #1 :
Январь 17, 2012, 12:16 »
При запуске, насколько я понял, предпросмотра, используется Qt шное представление.
Когда же ты запускаешь программу, Qt берет оформление у данной системы(которая у тебя сейчас).
Записан
Dimas
Чайник
Offline
Сообщений: 50
Re: Изменение стиля QHeaderView в QTableWidget
«
Ответ #2 :
Январь 17, 2012, 12:58 »
Как решить эту проблему?
Записан
qt 4.8.6, qt 5.12.4
stima
Гость
Re: Изменение стиля QHeaderView в QTableWidget
«
Ответ #3 :
Январь 17, 2012, 14:01 »
Код:
QHeaderView { color: rgb(255, 255, 255), padding-left: 4px; }
QHeaderView::section { background: transparent; }
Записан
Dimas
Чайник
Offline
Сообщений: 50
Re: Изменение стиля QHeaderView в QTableWidget
«
Ответ #4 :
Январь 17, 2012, 14:20 »
Цитата: stima от Январь 17, 2012, 14:01
Код:
QHeaderView { color: rgb(255, 255, 255), padding-left: 4px; }
QHeaderView::section { background: transparent; }
Ничего не изменилось. Так же левая колонка рисуется правильно, а верхняя строка (шапка) неправильно.
Записан
qt 4.8.6, qt 5.12.4
stima
Гость
Re: Изменение стиля QHeaderView в QTableWidget
«
Ответ #5 :
Январь 17, 2012, 15:24 »
Код:
#include <QtGui/QApplication>
#include <QtGui>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QTableWidget v;
QString SS = "QTableWidget { background: red; } "
"QHeaderView { background: transparent; }" //забыл про это
"QHeaderView::section { background: transparent; border: 1px solid black; }";
v.setColumnCount(2);
v.setStyleSheet(SS);
v.horizontalHeader()->setStretchLastSection(true);
v.show();
return app.exec();
}
«
Последнее редактирование: Январь 17, 2012, 15:26 от stima
»
Записан
Dimas
Чайник
Offline
Сообщений: 50
Re: Изменение стиля QHeaderView в QTableWidget
«
Ответ #6 :
Январь 17, 2012, 21:24 »
Все заработало, если создаю колонки и строки после вызова setStyleSheet. При генерации файла ui_dialog.h из дизайнера setStyleSheet вызывается после создания колонок и строк.
Цитировать
class Ui_Dialog
{
public:
QTableWidget *tableWidget;
void setupUi(QDialog *Dialog)
{
if (Dialog->objectName().isEmpty())
Dialog->setObjectName(QString::fromUtf8("Dialog"));
Dialog->resize(385, 231);
tableWidget = new QTableWidget(Dialog);
if (tableWidget->columnCount() < 1)
tableWidget->setColumnCount(1);
QTableWidgetItem *__qtablewidgetitem = new QTableWidgetItem();
tableWidget->setHorizontalHeaderItem(0, __qtablewidgetitem);
if (tableWidget->rowCount() < 1)
tableWidget->setRowCount(1);
QTableWidgetItem *__qtablewidgetitem1 = new QTableWidgetItem();
tableWidget->setVerticalHeaderItem(0, __qtablewidgetitem1);
tableWidget->setObjectName(QString::fromUtf8("tableWidget"));
tableWidget->setGeometry(QRect(8, 6, 349, 199));
tableWidget->setStyleSheet(QString::fromUtf8("QTableWidget { \n"
"background: red; \n"
"} \n"
"QHeaderView { \n"
"background: transparent; \n"
"}\n"
"QHeaderView::section { \n"
"background: transparent; \n"
"border: 1px solid black; \n"
"};"));
retranslateUi(Dialog);
QMetaObject::connectSlotsByName(Dialog);
} // setupUi
void retranslateUi(QDialog *Dialog)
{
Dialog->setWindowTitle(QApplication::translate("Dialog", "Dialog", 0, QApplication::UnicodeUTF8));
QTableWidgetItem *___qtablewidgetitem = tableWidget->horizontalHeaderItem(0);
___qtablewidgetitem->setText(QApplication::translate("Dialog", "New Column", 0, QApplication::UnicodeUTF8));
QTableWidgetItem *___qtablewidgetitem1 = tableWidget->verticalHeaderItem(0);
___qtablewidgetitem1->setText(QApplication::translate("Dialog", "New Row", 0, QApplication::UnicodeUTF8));
Q_UNUSED(Dialog);
} // retranslateUi
};
В итоге создание строк и колонок перенес в конструктор диалога
Цитировать
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent)
: QDialog(parent), ui(new Ui::Dialog)
{
ui->setupUi(this);
if (ui->tableWidget->columnCount() < 1)
ui->tableWidget->setColumnCount(1);
QTableWidgetItem *__qtablewidgetitem = new QTableWidgetItem();
ui->tableWidget->setHorizontalHeaderItem(0, __qtablewidgetitem);
if (ui->tableWidget->rowCount() < 1)
ui->tableWidget->setRowCount(1);
}
Dialog::~Dialog()
{
delete ui;
}
Тестовый пример прилагаю.
Спасибо всем за помощь.
«
Последнее редактирование: Январь 17, 2012, 21:27 от Dimas
»
Записан
qt 4.8.6, qt 5.12.4
stima
Гость
Re: Изменение стиля QHeaderView в QTableWidget
«
Ответ #7 :
Январь 17, 2012, 22:51 »
Не вьехал, а что нужно?)
п.с. Используй "являеться", а "не реализован по средствам" для ui. Намного облегчит жизнь.
Записан
Dimas
Чайник
Offline
Сообщений: 50
Re: Изменение стиля QHeaderView в QTableWidget
«
Ответ #8 :
Январь 17, 2012, 23:08 »
Я создал проект используя Creator. Потом в свойствах Edit Style Sheet изменил вид таблицы в Designer. Код в ui_dialog.h создан автоматически. Меня это устраивает. Дальше в коде Dialog.cpp я собирался наполнять таблицу данными. Что плохого в таком подходе?
Записан
qt 4.8.6, qt 5.12.4
stima
Гость
Re: Изменение стиля QHeaderView в QTableWidget
«
Ответ #9 :
Январь 17, 2012, 23:36 »
Причем тут это, ты бы хоть погуглил о чем я.
Код:
class MyWidget : public QWidget, public Ui_MyWidget { //является
};
void MyWidget::foo()
{
//ui->button->setEnebled(true); //уже не надо использовать ui
button->setEnebled(true); //button это часть класса
}
MyWidget::~MyWidget()
{
//delete ui; //ненадо заботиться о освобождении памяти и связаных с этим возможных проблем
}
итого, приятней читать, причем это я считаю идеалогически правлиьным для ui
Записан
Dimas
Чайник
Offline
Сообщений: 50
Re: Изменение стиля QHeaderView в QTableWidget
«
Ответ #10 :
Январь 18, 2012, 06:46 »
Согласен, удобней читать.
Но, при создании Creator`ом каркас класса имеет вид:
Цитировать
#ifndef DIALOG_H
#define DIALOG_H
#include <QtGui/QDialog>
namespace Ui
{
class Dialog;
}
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = 0);
~Dialog();
private:
Ui::Dialog *ui;
};
#endif // DIALOG_H
Цитировать
#include "dialog.h"
#include "ui_dialog.h"
Dialog::Dialog(QWidget *parent)
: QDialog(parent), ui(new Ui::Dialog)
{
ui->setupUi(this);
}
Dialog::~Dialog()
{
delete ui;
}
Я всего лишь добавил код в конструктор.
Записан
qt 4.8.6, qt 5.12.4
kambala
Джедай : наставник для всех
Offline
Сообщений: 4727
Re: Изменение стиля QHeaderView в QTableWidget
«
Ответ #11 :
Январь 18, 2012, 12:39 »
Цитата: stima от Январь 17, 2012, 23:36
итого, приятней читать, причем это я считаю идеалогически правлиьным для ui
не согласен. когда количество переменных в классе разрастается (тем более не всегда все элементы интерфейса рисуются в дизайнере), вспоминать как там что называется не очень удобно, а так написал ui. - и среда подсказала тебе.
Цитата: Dimas от Январь 18, 2012, 06:46
Но, при создании Creator`ом каркас класса имеет вид:
это можно изменить в настройках (вкладка Дизайнер)
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
andrew.k
Гость
Re: Изменение стиля QHeaderView в QTableWidget
«
Ответ #12 :
Январь 18, 2012, 12:49 »
Цитата: kambala от Январь 18, 2012, 12:39
Цитата: stima от Январь 17, 2012, 23:36
итого, приятней читать, причем это я считаю идеалогически правлиьным для ui
не согласен. когда количество переменных в классе разрастается (тем более не всегда все элементы интерфейса рисуются в дизайнере), вспоминать как там что называется не очень удобно, а так написал ui. - и среда подсказала тебе.
Цитата: Dimas от Январь 18, 2012, 06:46
Но, при создании Creator`ом каркас класса имеет вид:
это можно изменить в настройках (вкладка Дизайнер)
Согласен во всем. Хорошо, что не придется писать это)
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...