Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: xwicked от Июль 27, 2018, 01:06



Название: Изменение размера шрифтв заголовков в QTableWidget
Отправлено: xwicked от Июль 27, 2018, 01:06
Деелаю так:
Код
C++ (Qt)
QFont fTempFont;
   fTempFont = ui->twCopyBook->font();
   fTempFont.setPointSize(fTempFont.pointSize() + 1);
QHeaderView * hHeader = new QHeaderView(Qt::Horizontal);
   hHeader = ui->twCopyBook->horizontalHeader();
   hHeader->setFont(fTempFont);
   ui->twCopyBook->setHorizontalHeader(hHeader);
И так:
Код
C++ (Qt)
   hHeader->setStyleSheet("    font-size: 70px;\
           font-weight: bold;\
           background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,\
                                             stop:0 #616161, stop: 0.5 #505050,\
                                             stop: 0.6 #434343, stop:1 #656565);\
           color: black;\
           padding-left: 4px;\
           border: 1px solid #6c6c6c;"
);
Всё изменяется кроме размера шрифта. Есть ли  в сети рабочие примеры или вы может подскажите?

Благодарю за ответы!


Название: Re: Изменение размера шрифтв заголовков в QTableWidget
Отправлено: zhbr от Июль 27, 2018, 07:32
Код
C++ (Qt)
   QHeaderView * hHeader = new QHeaderView(Qt::Horizontal);
   hHeader = ui->twCopyBook->horizontalHeader();
 
ничего не режет глаз?

а по теме: у себя в проекте меняю через qss:
Код:
QHeaderView::section {
  font-size: 70px;
}



Название: Re: Изменение размера шрифтв заголовков в QTableWidget
Отправлено: xwicked от Июль 27, 2018, 12:18
Код
C++ (Qt)
   QHeaderView * hHeader = new QHeaderView(Qt::Horizontal);
   hHeader = ui->twCopyBook->horizontalHeader();
 
ничего не режет глаз?

а по теме: у себя в проекте меняю через qss:
Код:
QHeaderView::section {
  font-size: 70px;
}


Я беру текущий заголовок, копирую его в другую переменную, чтобы можно было изменят его значения, так как horizontalHeader() - это константа. Потом меняю только шрифт и загоняю обратно. По-моему всё логично.
Я видел эти примеры QSS, но куда их вставлять в проекте? Желательно способ без наследования QTableWidget.


Название: Re: Изменение размера шрифтв заголовков в QTableWidget
Отправлено: xwicked от Июль 27, 2018, 13:12
Нашёл здесь на форуме: http://www.prog.org.ru/topic_20632_0.html (http://www.prog.org.ru/topic_20632_0.html). Попробую распарсить. Если не получиться, то напишу.


Название: Re: Изменение размера шрифтв заголовков в QTableWidget
Отправлено: zhbr от Июль 27, 2018, 15:29
Я беру текущий заголовок, копирую его в другую переменную, чтобы можно было изменят его значения, так как horizontalHeader() - это константа. Потом меняю только шрифт и загоняю обратно. По-моему всё логично.
вы выделяете зачем-то динамически QHeaderView, а затем указатель на новый объект вы перезаписываете. утечка памяти.
и horizontalHeader() это не константа.

Я видел эти примеры QSS, но куда их вставлять в проекте? Желательно способ без наследования QTableWidget.
либо конкретному виджету http://doc.qt.io/qt-5/qwidget.html#styleSheet-prop либо аппликейшену http://doc.qt.io/qt-5/qapplication.html#styleSheet-prop


Название: Re: Изменение размера шрифтв заголовков в QTableWidget
Отправлено: xwicked от Июль 30, 2018, 23:04
...
вы выделяете зачем-то динамически QHeaderView, а затем указатель на новый объект вы перезаписываете. утечка памяти.
и horizontalHeader() это не константа.
...
Код
C++ (Qt)
qtableview.h
QHeaderView *horizontalHeader() const;
Я всё правильно делаю. Зря посомневался в себе.... Он же подсказкой показывает в QtCreator с каким свойством или меетодом я работаю!


Название: Re: Изменение размера шрифтв заголовков в QTableWidget
Отправлено: ssoft от Июль 31, 2018, 08:03
Я всё правильно делаю. Зря посомневался в себе.... Он же подсказкой показывает в QtCreator с каким свойством или меетодом я работаю!

Даже не знаю что сказать... Нужно срочно учить плюсы, если хотите программировать на них.

Код
C++ (Qt)
   QHeaderView * hHeader = new QHeaderView(Qt::Horizontal);
   hHeader = ui->twCopyBook->horizontalHeader();
 

Я беру текущий заголовок, копирую его в другую переменную, чтобы можно было изменят его значения, так как horizontalHeader() - это константа. Потом меняю только шрифт и загоняю обратно. По-моему всё логично.
Я видел эти примеры QSS, но куда их вставлять в проекте? Желательно способ без наследования QTableWidget.

Вы создаете переменную указателя со связью с совершенно новым объектом.
Затем заменяете значение указателя связью с каким-то другим. Какая-либо связь с первым объектом исчезает, появляются, так называемые, мемори лики.

Так - все отлично работает.

Код
C++ (Qt)
   QFont fTempFont;
   fTempFont = ui->twCopyBook->font();
   fTempFont.setPointSize(fTempFont.pointSize() + 10);
   QHeaderView * hHeader = new QHeaderView(Qt::Horizontal);
   hHeader->setFont(fTempFont);
   ui->twCopyBook->setHorizontalHeader(hHeader);
 



Название: Re: Изменение размера шрифтв заголовков в QTableWidget
Отправлено: zhbr от Июль 31, 2018, 09:31
Я всё правильно делаю. Зря посомневался в себе.... Он же подсказкой показывает в QtCreator с каким свойством или меетодом я работаю!

думаю не зря вы в себе сомневаетесь :)

Код:
#include <QString>
#include <iostream>

class SomeClass
{
public:
    SomeClass(): _str(new QString)
    {
        *_str = "foo";
    }
    ~SomeClass()
    {
        delete _str;
    }

    QString* strPtr() const
    {
        return _str;
    }

private:
    QString* _str;
};

int main(int, char**)
{
    SomeClass a;

    std::cout << a.strPtr()->toStdString().c_str() << std::endl;

    *a.strPtr() = "bar";

    std::cout << a.strPtr()->toStdString().c_str() << std::endl;
}


Название: Re: Изменение размера шрифтв заголовков в QTableWidget
Отправлено: xwicked от Июль 31, 2018, 15:40
...
Даже не знаю что сказать... Нужно срочно учить плюсы, если хотите программировать на них.

...

Так - все отлично работает.

Код
C++ (Qt)
   QFont fTempFont;
   fTempFont = ui->twCopyBook->font();
   fTempFont.setPointSize(fTempFont.pointSize() + 10);
   QHeaderView * hHeader = new QHeaderView(Qt::Horizontal);
   hHeader->setFont(fTempFont);
   ui->twCopyBook->setHorizontalHeader(hHeader);
 
Сорян. ВОт это
Код
C++ (Qt)
= new QHeaderView(Qt::Horizontal)
лишнее
Ваш код работает только если обнуляются строки со столбцами. Динамически это не происходит...