crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

Steklova Olga
  опции профиля:
сообщение 2.12.2011, 19:20
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 27.9.2011
Из: Санкт-Петербург
Пользователь №: 2912

Спасибо сказали: 5 раз(а)




Репутация:   4  


Здравствуйте :)
Подскажите, пожалуйста, как временно изменить цвет текста и фона в QSpinBox и QTimeEdit ?
Можно это сделать с помощью QPalette ?

Например, чтобы в QLineEdit изменить цвет текста и фона,
задаю цвета для QPalette::Text и QPalette::Base его палитры:
QPalette pal_lineEdit(this->palette());
pal_lineEdit.setColor(QPalette::Text, Qt::red); //цвет текста
pal_lineEdit.setColor(QPalette::Base, Qt::yellow); //цвет фона
lineEdit->setPalette(pal_lineEdit);

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Steklova Olga
  опции профиля:
сообщение 2.12.2011, 21:04
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 198
Регистрация: 27.9.2011
Из: Санкт-Петербург
Пользователь №: 2912

Спасибо сказали: 5 раз(а)




Репутация:   4  


Цитата
А временно - это как?
А временно - это по нажатию на разные кнопки.

Попробовала сделать аналогично. Написала пример (см. код). Он работает!
#include <QtGui/QApplication>
#include <QtGui/QWidget>
#include <QtGui/QTimeEdit>
#include <QtGui/QLineEdit>
#include <QtGui/QSpinBox>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    QWidget win;

    QLineEdit *lineEdit = new QLineEdit(&win);
    lineEdit->move(10,10);
    lineEdit->setText("stroka");
    QPalette pal1 = lineEdit->palette();
    pal1.setColor(QPalette::Base, Qt::yellow);
    pal1.setColor(QPalette::Text, Qt::blue);
    lineEdit->setPalette(pal1);

    QSpinBox *spinBox = new QSpinBox(&win);
    spinBox->move(10,50);
    spinBox->setRange(0, 1000);
    spinBox->setSingleStep(10);
    spinBox->setValue(100);
    QPalette pal2 = spinBox->palette();
    pal2.setColor(QPalette::Base, Qt::yellow);
    pal2.setColor(QPalette::Text, Qt::blue);
    spinBox->setPalette(pal2);

    QTimeEdit *timeEdit = new QTimeEdit(&win);
    timeEdit->move(10,90);
    timeEdit->setTime(QTime::currentTime());
    QPalette pal3 = timeEdit->palette();
    pal3.setColor(QPalette::Base, Qt::yellow);
    pal3.setColor(QPalette::Text, Qt::blue);
    timeEdit->setPalette(pal3);

    win.show();

    pal1.setColor(QPalette::Base, Qt::green);
    pal1.setColor(QPalette::Text, Qt::black);
    lineEdit->setPalette(pal1);

    pal2.setColor(QPalette::Base, Qt::green);
    pal2.setColor(QPalette::Text, Qt::black);
    spinBox->setPalette(pal2);

    pal3.setColor(QPalette::Base, Qt::green);
    pal3.setColor(QPalette::Text, Qt::black);
    timeEdit->setPalette(pal3);

    return app.exec();
}

А у меня в программе чуть-чуть не так (см. код) и уже, к сожалению, НЕ работает.
void Dialog_filter::slot_filter_accepted()
{
    inputError = false;
    if (checkBox_filter_setpar->checkState() == Qt::Checked) {
        if (checkBox_filter_b->checkState() == Qt::Checked
            &&
            (spinBox_filter_b_min->value() >
             spinBox_filter_b_max->value())
            ) {

            QPalette pal_lineEdit(this->palette());
            //QPalette pal_lineEdit(lineEdit_filter_m->palette());
            pal_lineEdit.setColor(QPalette::Text, Qt::red);
            pal_lineEdit.setColor(QPalette::Base, Qt::yellow);
            lineEdit_filter_m->setPalette(pal_lineEdit);

            //QPalette pal_spinBox(this->palette());
            //QPalette pal_spinBox(spinBox_filter_b_min->palette());
            //pal_spinBox.setColor(QPalette::Text, Qt::red);
            //pal_spinBox.setColor(QPalette::WindowText, Qt::green);
            //pal_spinBox.setColor(QPalette::Base, Qt::yellow);
            //spinBox_filter_b_min->setPalette(pal_spinBox);
            spinBox_filter_b_min->setPalette(pal_lineEdit);

            //QPalette pal_timeEdit(this->palette());
            //pal_timeEdit.setColor(QPalette::Text, Qt::red);
            //pal_timeEdit.setColor(QPalette::WindowText, Qt::green);
            //pal_timeEdit.setColor(QPalette::Base, Qt::yellow);
            //timeEdit_filter_time_min->setPalette(pal_timeEdit);
            timeEdit_filter_time_min->setPalette(pal_lineEdit);

            inputError = true;
        }
    }
    if (inputError)
        return;
}

QLineEdit меняет цвета, а QSpinBox и QTimeEdit нет.
Прикрепленный файл  error.bmp ( 65.9 килобайт ) Кол-во скачиваний: 577
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 15.6.2025, 2:36