[Qt-interest] QAbstractSpinBox question

Doug Stewart doug.dastew at gmail.com
Wed Sep 7 04:22:59 CEST 2011


Thank you!!!!!! It works!!!

With the following change set all is good :-)
doug


...**7171*void TextSpinBox::colorChangedSlot(QString
text)*7272*{*7373*    //qDebug() << " Colour was changed.";*74-*
QPalette p = this->palette();*75-*    p.setColor(QPalette::**Text**,
m_colorMap.value(text));*76-*    setPalette(p);*74+*    QPalette p =
this**->lineEdit()**->palette();*75+*
p.setColor(QPalette::**Base**, m_colorMap.value(text));*76+*
**this->lineEdit()->**setPalette(p);*7777*}*7878**7979*void
TextSpinBox::setColourMap()*...





**


On Tue, Sep 6, 2011 at 9:54 PM, Malyushytsky, Alex <alex at wai.com> wrote:

> Spin box is complex control, which uses QLineEdit.
>
> So I guess you need to set background color for
> QAbstractSpinBox::lineEdit()
>
> To get the pointer to line edit  correctly you need to subclass
> QAbstractSpinBox.
>
> But you don't have to if you use QObject functionality, something like:
>
> QAbstractSpinBox* spinBox =...; // your spinbox
>
> QLineEdit  * edit = spinBox ->findChild< QLineEdit *>(
> QLatin1String("qt_spinbox_lineedit"));
>
> Regards,
>
> Alex
>
>
>
> From: qt-interest-bounces+alex=wai.com at qt.nokia.com [mailto:
> qt-interest-bounces+alex=wai.com at qt.nokia.com] On Behalf Of Doug Stewart
> Sent: Tuesday, September 06, 2011 6:17 PM
> To: Qt Interest
> Subject: [Qt-interest] QAbstractSpinBox question
>
> I am new to qt and C++ === so any suggestions will be appreciated.
>
>
> I am trying to make a text spinbox from QAbstractSpinBox such that the
> color of each item
> in the spinbox is different. So far I have the forground text changing
> color like I want it by using
> QPalette::Text
> I then tried to change the background color by using
>
> QPalette::Window    but this does not work.
>
>
> Is there a way to change the background color in my textspinbox?
>
>
>
> Doug
>
>
>
>
>
>
>
> This is  textspinbox.cpp
>
>
>
>
> #include "textspinbox.h"
> #include <QAbstractSpinBox>
> #include <QDebug>
> #include <QPalette>
> TextSpinBox::TextSpinBox(QWidget* parent)
>    : QAbstractSpinBox(parent), m_list(0), m_index(0), m_colorMap()
> {
>    this->setWrapping(true);
>    this->stepEnabled();
>    this->setMinimumSize(150, 30);
>    connect(this, SIGNAL(colorChanged(QString)),
>            this, SLOT(colorChangedSlot(QString)));
> }
> TextSpinBox::~TextSpinBox()
> {
>    /* Set the pointer to null, and then the stack part of it will be
>     * handled regularly.*/
>    m_list = 0;
> }
> void TextSpinBox::setText(const QString& text)
> {
>    if(m_list != 0)
>    {
>       m_index = m_list->indexOf(text);
>       this->lineEdit()->setText(m_list->at(m_index));
>       setColourMap();
>       emit colorChanged(m_list->at(m_index));
>   }
>   else
>       qDebug() << "The TextSpinBog QStringList is not initialized
> properly.";
> }
> /* This is the best way, and most secure way of setting up the spin box. */
> void TextSpinBox::init(const QStringList &list, const QString &text)
> {
>    m_list = &list;
>    m_index = m_list->indexOf(text);
>    this->lineEdit()->setText(m_list->at(m_index));
>    setColourMap();
>    emit colorChanged(m_list->at(m_index));
> }
> void TextSpinBox::stepBy(int steps)
> {
>    m_index += steps;
>    if( m_index >= m_list->size() )
>        m_index = 0;
>    else if( m_index < 0 )
>        m_index = m_list->size()-1;
>    this->lineEdit()->setText( m_list->at(m_index) );
>    emit colorChanged(m_list->at(m_index));
>    emit textChanged();
> }
> QAbstractSpinBox::StepEnabled TextSpinBox::stepEnabled() const
> {
>    return
> QAbstractSpinBox::StepDownEnabled|QAbstractSpinBox::StepUpEnabled;
> }
> void TextSpinBox::colorChangedSlot(QString text)
> {
>    //qDebug() << " Colour was changed.";
>    QPalette p = this->palette();
>    p.setColor(QPalette::Text, m_colorMap.value(text));
>    setPalette(p);
> }
> void TextSpinBox::setColourMap()
> {
>    int size = 128 / m_list->size();
>    for (int i = m_list->size() -1 ; i >= 0 ; i--)
>    {
>        /*These colours are hard coded to try to match the present
>          octave colour settings in a different part of the program.
>         */
>        QColor color( 30, 127 + i*size, 127 - i*size);
>        m_colorMap.insert(m_list->at(i), color);
>    }
> }
>
> --
> DAS
>
> https://linuxcounter.net/user/206392.html
>
>
>
> ---------------------------------------------------------------------------------------------------
> Weidlinger Associates, Inc. made the following annotations.
>
> “This message and any attachments are solely for the intended recipient and
> may contain confidential or privileged information. If you are not the
> intended recipient, any disclosure, copying, use, or distribution of the
> information included in this message and any attachments is prohibited. If
> you have received this communication in error, please notify us by reply
> e-mail and immediately and permanently delete this message and any
> attachments. Thank you.”
>
> “Please consider our environment before printing this email.”
> _______________________________________________
> Qt-interest mailing list
> Qt-interest at qt.nokia.com
> http://lists.qt.nokia.com/mailman/listinfo/qt-interest
>



-- 
DAS

https://linuxcounter.net/user/206392.html
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20110906/51d4f6b5/attachment.html 


More information about the Qt-interest-old mailing list