как передать шрифт в этикетку?

Рейтинг: 0Ответов: 1Опубликовано: 02.07.2023

Не могу понять почему не могу передать шрифт в этикетку (ака label ) ??

.h

#include <QFont>

...
class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

...
    // подстраиваемый шрифт label
    QFont* font;
    int height_monitor {0};
    int width_monitor  {0};

...

}

.cpp

#include "mainwindow.h"
#include "./ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // тут настраиваю и объявляю элементы

    font = new QFont();
    ...
}


void MainWindow::resizeEvent(QResizeEvent *e)
{
      height_monitor= e->size().height();
      width_monitor = e->size().width();

      font->setPointSize((height_monitor*width_monitor)/4);
      
      ui->label->setFont(font);  // вот тут не работает !!!!!
}

Ответы

▲ 2Принят

Здесь несколько ошибок:

  • нарушена сигнатура функции setFont(const QFont &) - передается указатель;
  • значение (height_monitor*width_monitor)/4 может быть слишком большое;
  • в Qt нет проверки на слишком большое значение, передаваемое в setPointSize, что может привести к краху программы и даже системы.