改变QT中标签的背景颜色

Changing the background colour of label in QT

我有一个主 window 和一个标签。这必须全屏显示。数据将显示在标签上。背景应该是黑色的,文字需要是白色的。我正在通过串行接收 1 or 2 or 3 之类的数据,并且正在从文件中获取 1 or 2 or 3 的相关文本。我也在调整文本以填充完整的标签。如果文本很小,那么它的字体大小需要增加,如果它很大,那么它需要较小的字体大小。

我正在使用样式表将标签的背景颜色设置为黑色,并在调整文本的字体大小后放置它。如下所示:

void MainWindow::SerialRead()
{
   //Reading the serial data
   //Reading the string from file
   //Adjusting the font size to fill the label

   //Changing color
   ui->label->setStyleSheet("QLabel{ background-color : black; color : white; }");
}

所以在这之后我的结果是这样的:

如上图所示,由于我们没有设置main window的背景颜色,所以有白色的边框是main window(因为网页看不清楚颜色也是白色)。我还希望 main window 的颜色为黑色,以便全屏为黑色,文本为白色。我还尝试在 main.c 中为主要 window 设置样式表,如下所示:

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  MainWindow app;
  //Chaning color
  app.setStyleSheet("QMainWindow {background-color : black;}");
  app.SerialInit();
  app.SerialWrite();
  app.showFullScreen();

  return a.exec();
}

所以它确实将主 window 的颜色更改为黑色,但结果如下所示:

如您所见,它还更改了我不想要的文本的字体大小。我怎样才能做到这一点?

我也是 qt 的新手,但我建议你先用 setObjectName 设置一个 QMainWindow 的名称,然后使用样式 sheet as:

int main(int argc, char *argv[])
{
  QApplication a(argc, argv);
  MainWindow app;
  //Chaning color
  app.setStyleSheet("#MainWindowName{background-color : black;}");
  app.SerialInit();
  app.SerialWrite();
  app.showFullScreen();

  return a.exec();
}

希望对您有所帮助。