LINUX.ORG.RU

QTextTableFormat называет белое черным

 


0

2

Пытаюсь узнать цвет фона таблицы, размещенной в тексте QTextEdit через QTextTableFormat. Использую код:

  QTextCursor cursor(textArea->textCursor());
  QTextTable *table = cursor.currentTable();
  
  ... 

  // Цвет фона таблицы
  QColor tableBackground=table->format().background().color();
  qDebug() << "Table background color is: " << tableBackground.name();


Проблема в том, что если у таблицы не задан цвет фона, а таблица на экране белая, возвращается черный цвет:

  Table background color is:  "#000000"


И нет никаких инструментов (или я о них не знаю), чтобы понять, что черный цвет возвращается потому, что цвет просто не задан. (Похоже, что черным кодируется отсутствие цвета).

Вопрос. Как узнать истинный цвет фона таблицы?

★★★★★

Сделал так:

  // Цвет фона таблицы
  QColor tableBackground;
  if(table->format().hasProperty(QTextFormat::BackgroundBrush))
   tableBackground=table->format().background().color(); // Фон таблицы задан явно
  else
    tableBackground.setRgb(255,255,255); // Фон таблицы не задан, используется белый цвет

Xintrea ★★★★★
() автор топика

Тут подвох в том, что ты запрашиваешь несуществующее свойство. Что возвращать в таком случае, не совсем понятно. Можно вернуть nullprt, можно бросить exception, например. Qt предпочитает возвращать дефолтное значение, в данном случае просто создается объект QBrush с конструктором по-умолчанию, который:

Constructs a default black brush with the style Qt::NoBrush (i.e. this brush will not fill shapes).

hippi90 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.