• 8453阅读
  • 7回复

如何改变按钮及其字体的颜色 [复制链接]

上一主题 下一主题
离线polarity
 
只看楼主 倒序阅读 楼主  发表于: 2006-09-20
我想改变默认的按钮颜色和按钮上字体的颜色,我用的是qt2.3.7,请问能实现么

我尝试了一下uclinux发的改变按钮字体颜色的方法
QPushButton pushbutton("hello world");
.......

.......

.......
QPalette newPalette = pushbutton.palette();
newPalette.setColor(QPalette::ButtonText, Qt::blue);
pushButton.setPalette(newPalette);
但是编译时提示没有ButtonText成员:(
离线style
只看该作者 1楼 发表于: 2006-09-20
QPushButton pushbutton("hello world");
.......
.......
.......
QColor newColor = ("blue");
QColorGroup new = palette().copy().normal();
new.setColor(ColorGroup::ButtonText, QColor("blue"));
QPalette newp;
newp.setNormal(new);
setPlalette(newPalette.true);
离线polarity
只看该作者 2楼 发表于: 2006-09-20
我按你的方法敲进去了,出现了语法错误
QColorGroup new = palette().copy().normal(); 和 newp.setNormal(new);
还有 setPalette(newp,true); 这三句有问题
离线style
只看该作者 3楼 发表于: 2006-09-20
我写的是QT3的.
我没QT2文档.所以不知道相关函数名和参数.
我只是大概意思.你看懂我的这段代码意思就行了.最主要是你写的代码思路就不对.
QPalette::ButtonText
QPalette分4种模式, (QT4中,好像在QT3中只分3种)
QPalette::Disabled
QPalette::Active
QPalette::Inactive
QPalette::Normal

而你写的ButtonText是QColorGroup的emun成员
离线style
只看该作者 4楼 发表于: 2006-09-20
emun->enum  
离线polarity
只看该作者 5楼 发表于: 2006-09-20
谢谢style,不过我刚学习qt没多久不太会查文档,你写的语句我有些看不懂,比如QColorGroup new = palette().copy().normal();   newp.setNormal(new);   setPlalette(newPalette.true); 我现在只能照着现有的例程编点软件呵呵。麻烦你给我详细解释下好么,谢谢你
我把QPalette.h贴出来吧
/****************************************************************************
** $Id: qt/src/kernel/qpalette.h   2.3.7   edited 2001-05-08 $
**
** Definition of QColorGroup and QPalette classes
**
** Created : 950323
**
** Copyright (C) 1992-2000 Trolltech AS. All rights reserved.
**
** This file is part of the kernel module of the Qt GUI Toolkit.
**
** This file may be distributed under the terms of the Q Public License
** as defined by Trolltech AS of Norway and appearing in the file
** LICENSE.QPL included in the packaging of this file.
**
** This file may be distributed and/or modified under the terms of the
** GNU General Public License version 2 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.
**
** Licensees holding valid Qt Enterprise Edition or Qt Professional Edition
** licenses may use this file in accordance with the Qt Commercial License
** Agreement provided with the Software.
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
**   information about Qt Commercial License Agreements.
** See http://www.trolltech.com/qpl/ for QPL licensing information.
** See http://www.trolltech.com/gpl/ for GPL licensing information.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**********************************************************************/

#ifndef QPALETTE_H
#define QPALETTE_H

#ifndef QT_H
#include "qwindowdefs.h"
#include "qcolor.h"
#include "qshared.h"
#include "qbrush.h"
#endif // QT_H

#ifndef QT_NO_PALETTE
class QColorGroupPrivate;


class Q_EXPORT QColorGroup
{
public:
  QColorGroup();
  QColorGroup( const QColor &foreground, const QColor &button,
        const QColor &light, const QColor &dark, const QColor &mid,
        const QColor &text, const QColor &base );
  QColorGroup( const QBrush &foreground, const QBrush &button,
        const QBrush &light, const QBrush &dark, const QBrush &mid,
        const QBrush &text, const QBrush &bright_text,
        const QBrush &base, const QBrush &background);
  QColorGroup( const QColorGroup & );

  ~QColorGroup();

  QColorGroup& operator =(const QColorGroup&);

  // Do not change the order, the serialization format depends on it
  enum ColorRole { Foreground, Button, Light, Midlight, Dark, Mid,
              Text, BrightText, ButtonText, Base, Background, Shadow,
              Highlight, HighlightedText,
          NColorRoles };

  const QColor &color( ColorRole ) const;
  const QBrush &brush( ColorRole ) const;
  void setColor( ColorRole, const QColor & );
  void setBrush( ColorRole, const QBrush & );

  const QColor &foreground()    const    { return br[Foreground].color(); }
  const QColor &button()    const    { return br[Button].color(); }
  const QColor &light()    const    { return br[Light].color(); }
  const QColor &dark()    const    { return br[Dark].color(); }
  const QColor &mid()        const    { return br[Mid].color(); }
  const QColor &text()    const    { return br[Text].color(); }
  const QColor &base()    const    { return br[Base].color(); }
  const QColor &background()    const    { return br[Background].color(); }

  const QColor &midlight()    const    { return br[Midlight].color(); }
  const QColor &brightText()    const    { return br[BrightText].color(); }
  const QColor &buttonText()    const    { return br[ButtonText].color(); }
  const QColor &shadow()    const    { return br[Shadow].color(); }
  const QColor &highlight()    const    { return br[Highlight].color(); }
  const QColor &highlightedText() const{return br[HighlightedText].color(); }

  bool    operator==( const QColorGroup &g ) const;
  bool    operator!=( const QColorGroup &g ) const
   { return !(operator==(g)); }

private:
  QBrush *br;
  QColorGroupPrivate * d;

  friend class QPalette;
};


class Q_EXPORT QPalette
{
public:
  QPalette();
  QPalette( const QColor &button );
  QPalette( const QColor &button, const QColor &background );
  QPalette( const QColorGroup &active, const QColorGroup &disabled,
        const QColorGroup &inactive );
  QPalette( const QPalette & );
  ~QPalette();
  QPalette &operator=( const QPalette & );

  enum ColorGroup { Normal, Disabled, Active, Inactive, NColorGroups };

  const QColor &color( ColorGroup, QColorGroup::ColorRole ) const;
  const QBrush &brush( ColorGroup, QColorGroup::ColorRole ) const;
  void setColor( ColorGroup, QColorGroup::ColorRole, const QColor & );
  void setBrush( ColorGroup, QColorGroup::ColorRole, const QBrush & );

  void setColor( QColorGroup::ColorRole, const QColor & );
  void setBrush( QColorGroup::ColorRole, const QBrush & );

  QPalette    copy() const;

  const QColorGroup &active() const { return data->active; }
  const QColorGroup &disabled() const { return data->disabled; }
  const QColorGroup &inactive() const { return data->inactive; }
  const QColorGroup &normal() const { return data->normal; } // obsolete

  void    setActive( const QColorGroup & );
  void    setDisabled( const QColorGroup & );
  void    setInactive( const QColorGroup & );
  void    setNormal( const QColorGroup & ); // obsolete

  bool    operator==( const QPalette &p ) const;
  bool    operator!=( const QPalette &p ) const
                   { return !(operator==(p)); }
  bool    isCopyOf( const QPalette & );

  int        serialNumber() const    { return data->ser_no; }

private:
  void    detach();
  QBrush    &directBrush( ColorGroup, QColorGroup::ColorRole ) const;

  struct QPalData : public QShared {
   QColorGroup normal; // ##### alias for active due to inline functions above, remove 3.0
   QColorGroup disabled;
   QColorGroup active;
   int       ser_no;
   QColorGroup inactive;
  } *data;
  static QPalData *defPalData;
  static void cleanupDefPal();
};


/*****************************************************************************
QColorGroup/QPalette stream functions
*****************************************************************************/

#ifndef QT_NO_DATASTREAM
Q_EXPORT QDataStream &operator<<( QDataStream &, const QColorGroup & );
Q_EXPORT QDataStream &operator>>( QDataStream &, QColorGroup & );

Q_EXPORT QDataStream &operator<<( QDataStream &, const QPalette & );
Q_EXPORT QDataStream &operator>>( QDataStream &, QPalette & );
#endif // QT_NO_DATASTREAM

#endif // QT_NO_PALETTE
#endif // QPALETTE_H
离线polarity
只看该作者 6楼 发表于: 2006-09-22
前两天上不了论坛。。。。哪位好心人能给我解决一下啊
离线polarity
只看该作者 7楼 发表于: 2006-09-23
问题已经解决,我翻到了一个旧贴子,以前看贴不细心呵呵:)
http://www.qtcn.org/bbs/read.php?tid=5198
改变字体颜色就吧QColorGroup::Button改成 QColorGroup::ButtonText
快速回复
限100 字节
 
上一个 下一个