Как я выбираю цвет фона для целого окна спокойного приложения?

Я не уверен, как это сделать. Я слышал, что указатель по умолчанию установлен в NULL, хотя я не знаю, гарантировано ли это / в стандарте C ++.
Это не гарантируется стандартом C ++. Встроенные типы (например, указатели) заполняются мусором, если не указано иное.

Я также не уверен, что инициализация с помощью нового оператора по сравнению с обычным распределением также может иметь значение.
Что вы подразумеваете под «нормальным распределением»? Если вы говорите об автоматической переменной, то вы можете сделать это:

MyType * pointers[2] = {}

и указатели должны быть инициализированы в NULL.

26
задан ymoreau 24 August 2017 в 13:45
поделиться

3 ответа

Я бы просто использовал таблицу стилей для всего окна.

Например, если ваше окно наследуется от QWidget, вот что я делаю:

MainWindow::MainWindow(QWidget *parent) : QWidget(parent), ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    this->setStyleSheet("background-color: black;");
}

На моем Mac , все окно моего приложения черное (кроме строки заголовка).

РЕДАКТИРОВАТЬ: согласно комментарию, вот решение без использования файлов пользовательского интерфейса и загрузки внешней таблицы стилей

#include <QtGui/QApplication>
#include <QtGui/QMainWindow>
#include <QtGui/QVBoxLayout>
#include <QtGui/QPushButton>
#include <QtCore/QFile>

int main(int ArgC, char* ArgV[])
{
QApplication MyApp(ArgC, ArgV);

QMainWindow* pWindow = new QMainWindow;
QVBoxLayout* pLayout = new QVBoxLayout(pWindow);
pWindow->setLayout(pLayout);

QPushButton* pButton = new QPushButton("Test", pWindow);
pLayout->addWidget(pButton);

QFile file(":/qss/default.qss");
file.open(QFile::ReadOnly);
QString styleSheet = QLatin1String(file.readAll());

qApp->setStyleSheet(styleSheet);

pWindow->setVisible(true);
MyApp.exec();
}

Файл таблицы стилей (default.qss) как показано ниже:

QWidget {
  background-color: black;
}

Этот файл является частью файла ресурсов (stylesheet.qrc):

<RCC>
  <qresource prefix="/qss">
    <file>default.qss</file>
  </qresource>
</RCC>

А вот мой файл проекта:

TARGET = StyleSheet
TEMPLATE = app
SOURCES += main.cpp
RESOURCES += stylesheet.qrc
27
ответ дан 28 November 2019 в 07:14
поделиться

Это сработало для меня:

a = new QApplication(argc, argv);
QPalette pal = a->palette();
pal.setColor(QPalette::Window, Qt::white);
a->setPalette(pal);
13
ответ дан 28 November 2019 в 07:14
поделиться

Что касается виджетов, я предлагаю вам посмотреть Как в Qt установить цвет фона виджета, такого как поле со списком или двойное поле прокрутки? . Также проверьте Пользовательские стили с использованием таблиц стилей Qt 4.2 . Помните, что эта вторая ссылка показывает вам, как использовать таблицы стилей в этих виджетах.

Если вы уже разработали что-то для Интернета и использовали CSS, это то же самое.

2
ответ дан 28 November 2019 в 07:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: