• 6112阅读
  • 9回复

qt4怎样改变标题栏的背景色和样式,好象没有相关函数 [复制链接]

上一主题 下一主题
离线landuochong
 

只看楼主 倒序阅读 楼主  发表于: 2009-05-19
qt4怎样改变标题栏的背景色和样式,好象没有相关函数?我把标题栏隐藏掉,想自己做个不规则界面,也实现不了,望高手指点?
离线yang_huafeng

只看该作者 1楼 发表于: 2009-05-19
隐藏标题栏:
setWindowFlags ( Qt::FramelessWindowHint )
然后自己画一个图片按钮,重写下面事件:
    virtual void mousePressEvent(QMouseEvent* arg1);
    virtual void mouseReleaseEvent(QMouseEvent* arg1);
    virtual void paintEvent(QPaintEvent* arg1);



void ExitButton::mousePressEvent(QMouseEvent* arg1)
{
    if (arg1->button() == Qt::LeftButton)
    {
        Global_Server.PlayFile((char *)(QString(BTN_RING).toUtf8().data()));
        arg1->accept();
        m_ButtonState=ButtonPress;
        emit clicked();
        this->repaint();
    }
}

void ExitButton::mouseReleaseEvent(QMouseEvent* arg1)
{
    if (arg1->button() == Qt::LeftButton)
    {
        arg1->accept();
        m_ButtonState=ButtonRelease;
        this->repaint();
    }
}

void ExitButton::paintEvent(QPaintEvent* arg1)
{
    QImage ButtonImage;
    QPainter Painter;
    switch (m_ButtonState)
    {
    case ButtonPress:
        ButtonImage.load(":/images/closebuttondown.png");
        break;
    case ButtonRelease:
    default:
        ButtonImage.load(":/images/closebutton.png");
        break;
    }
    Painter.begin(this);
    Painter.drawImage(this->rect(),ButtonImage);
    Painter.end();
    QWidget::paintEvent(arg1);
}
QT使用中...
离线landuochong

只看该作者 2楼 发表于: 2009-05-19
你的程序只是隐藏了工具栏吧,并没有显示不规则窗口啊,而且只是实现的button效果
离线duduqq

只看该作者 3楼 发表于: 2009-05-19
获取标题栏的背景颜色和样式得从系统获得,不过我也不知如何获得。LINUX下可以用GTK+的程序获取。
离线yang_huafeng

只看该作者 4楼 发表于: 2009-05-19
只能作为参考(不完全符合条件,只是看起来像不规则,实际上还是规则的):
我画不规则按钮的方法,
1.从QWidget继承一个窗口
2.设置窗体全透明
3.将一张不规则的图片画到窗体上,这样就看上去是图片的形状
QT使用中...
离线landuochong

只看该作者 5楼 发表于: 2009-05-20
你那样只能处理按钮把,对于主窗口是不行的
离线duduqq

只看该作者 6楼 发表于: 2009-05-20
主窗体一样可以做成不规则的,用setMask()
离线landuochong

只看该作者 7楼 发表于: 2009-05-20
能不能给个例子??
离线kamasamikon
只看该作者 8楼 发表于: 2009-05-20
二楼的做法会隱藏任务条上右键系统菜单。
离线duduqq

只看该作者 9楼 发表于: 2009-05-20
QT的例子就有个Clock时钟啊,那就是不规则的窗体。
快速回复
限100 字节
 
上一个 下一个