当前位置:编程学习 > wap >>

Qt3 怎么使控件的背景色为主窗体的背景

Qt3 怎么使控件的背景色为主窗体的背景  或是让控件背景为透明 --------------------编程问答-------------------- 这个得自己写,虽然没写过QT,呵~~ --------------------编程问答-------------------- XX->setPaletteBackgroundColor(this->PaletteBackgroundColor); --------------------编程问答-------------------- XX->setPaletteBackgroundColor(this->PaletteBackgroundColor()); --------------------编程问答--------------------
引用 3 楼 chenwenluan 的回复:
XX->setPaletteBackgroundColor(this->PaletteBackgroundColor());


我试了 不行   --------------------编程问答-------------------- 用QPalette类,,把画刷弄成主窗体颜色,,不过按钮点击下去的时候还是会显示Button本色,,
用setflat(true)似乎也一样 --------------------编程问答--------------------
引用 5 楼 mr_dodo 的回复:
用QPalette类,,把画刷弄成主窗体颜色,,不过按钮点击下去的时候还是会显示Button本色,,
用setflat(true)似乎也一样


这不是和直接设置没什么区别吗?

我的主窗体是个图片背景。。。。。。。。
--------------------编程问答-------------------- 自己顶下 --------------------编程问答-------------------- 让空间的背景为一个不存在的文件,我在QT4下这样干实现透明了
O(∩_∩)O~ --------------------编程问答--------------------
引用 7 楼 bbyuan312 的回复:
自己顶下


不行啊  这样的话 控件默认的是灰色    QPixmap(NULL);     QPixmap("test.png");也不行
--------------------编程问答--------------------
引用 8 楼 hntxh 的回复:
让空间的背景为一个不存在的文件,我在QT4下这样干实现透明了
O(∩_∩)O~


不行啊  这样的话 控件默认的是灰色    QPixmap(NULL);    QPixmap("test.png");也不行 --------------------编程问答-------------------- 我查了查,貌似没有什么直接的方法,又试了试,像做到那样的效果可以使用QLabel,想加其他功能如单击就继承QLabel然后自己写单击事件,如下面我写的小例子


#include<QtGui>
#include<QtCore>
//by microsky2813@hotmail.com
class MyLabel:public QLabel{
public:
    MyLabel(const QString & text,  QWidget * parent , Qt::WindowFlags f = 0 ):QLabel(text,parent,f){}
    bool event ( QEvent * event ){
        if(QEvent::MouseButtonPress==event->type()){
            this->setText("clicked");
        }
        return QLabel::event(event);
    }
};

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


    QApplication qa(argc, argv);
    QWidget *w=new QWidget;
    w->setGeometry(100,100,200,140);
    w->setPalette(QPalette(QColor(Qt::blue)));
        QPushButton *pb=new QPushButton("Button",w);
        pb->setPalette(QPalette(w->palette()));//只是改变了控件边界颜色
                                               //继承于QWiget
        pb->setGeometry(10,10,50,30);
        pb->setIcon(QIcon());

        QTextEdit *te=new QTextEdit(w);
        te->setPalette(QPalette(w->palette()));//只是改变了控件边界颜色
                                               //继承于QWiget
        te->setGeometry(100,10,50,30);

        QLabel *l=new QLabel("Hello",w);
        l->setPalette(QPalette(w->palette()));//只是改变了控件边界颜色
                                               //继承于QWiget
                                                //对于label不改变背景色也可以
        l->setGeometry(10,50,50,30);

        MyLabel *ml=new MyLabel("Hello",w);
        ml->setPalette(QPalette(w->palette()));//只是改变了控件边界颜色
                                               //继承于QWiget
                                                //可以接收单击事件了
        ml->setGeometry(100,50,50,30);



    w->show();
    return qa.exec();
}

--------------------编程问答--------------------
引用 11 楼 microsky2813 的回复:
我查了查,貌似没有什么直接的方法,又试了试,像做到那样的效果可以使用QLabel,想加其他功能如单击就继承QLabel然后自己写单击事件,如下面我写的小例子

C/C++ code
#include<QtGui>
#include<QtCore>//by microsky2813@hotmail.comclass MyLabel:public QLabel{public:
    MyLabel(const QString& text,  QWidget* parent , Qt::WindowFlags f=0 ):QLabel(text,parent,f){}boolevent ( QEvent*event ){if(QEvent::MouseButtonPress==event->type()){this->setText("clicked");
        }return QLabel::event(event);
    }
};int main(int argc,char*argv[])
{


    QApplication qa(argc, argv);
    QWidget*w=new QWidget;
    w->setGeometry(100,100,200,140);
    w->setPalette(QPalette(QColor(Qt::blue)));
        QPushButton*pb=new QPushButton("Button",w);
        pb->setPalette(QPalette(w->palette()));//只是改变了控件边界颜色//继承于QWiget        pb->setGeometry(10,10,50,30);
        pb->setIcon(QIcon());

        QTextEdit*te=new QTextEdit(w);
        te->setPalette(QPalette(w->palette()));//只是改变了控件边界颜色//继承于QWiget        te->setGeometry(100,10,50,30);

        QLabel*l=new QLabel("Hello",w);
        l->setPalette(QPalette(w->palette()));//只是改变了控件边界颜色//继承于QWiget//对于label不改变背景色也可以        l->setGeometry(10,50,50,30);

        MyLabel*ml=new MyLabel("Hello",w);
        ml->setPalette(QPalette(w->palette()));//只是改变了控件边界颜色//继承于QWiget//可以接收单击事件了        ml->setGeometry(100,50,50,30);



    w->show();return qa.exec();
}



我试过  背景是图片的话 不行的   --------------------编程问答-------------------- 那可以在空间里背景设为透明的PNG --------------------编程问答--------------------
引用 13 楼 microsky2813 的回复:
那可以在空间里背景设为透明的PNG


那可以在控件里背景设为透明的PNG --------------------编程问答-------------------- 顶下,这个问题具体怎么解决啊? --------------------编程问答-------------------- Qt3啊,用这个
setPaletteBackgroundPixmap
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,