• 12180阅读
  • 15回复

Qt这样的标题栏能否实现?? [复制链接]

上一主题 下一主题
离线lovebe
 
只看楼主 倒序阅读 楼主  发表于: 2011-04-06
如果题,就是要他突出来,具体是怎么做呢??
还有就是标题能否做成win7的那个标题栏那样的透明效果。谢谢~!
离线linxy

只看该作者 1楼 发表于: 2011-04-06
这是个异形窗口,所以首先你应该知道怎么做一个异形的窗口,对于上面的工具栏,要去掉系统默认的工具栏然后自己画,可以自定义一个工具栏加到这个异形窗口中,作为伪工具栏。对于异形窗口,我用你上面给的图片作为底图,下面是实现代码,你看一下有没有帮助:
setWindowFlags( Qt::CustomizeWindowHint ); // 去掉系统默认的工具栏,在构造函数里边

void Widget::paintEvent(QPaintEvent *)
{
    QPainter painter( this );
    QPixmap pixmap( ":/images/images/title.png" );
    painter.drawPixmap( 0, 0, pixmap );
}

void Widget::resizeEvent(QResizeEvent *)
{
    QPixmap pixmap( ":/images/images/title.png" );
    setMask( pixmap.createHeuristicMask() );
}
离线linxy

只看该作者 2楼 发表于: 2011-04-06
对不起,说错了,是标题栏
离线lovebe
只看该作者 3楼 发表于: 2011-04-06
谢谢你,但是我的这弄出来是这样的效果,我是重写了title,按你说用那个图做为底图!但那个突出来的效果是没有啊,那个logo一超出范围,就没有了,而已做为底图,它还有个等 比例缩放的问题!
离线lovebe
只看该作者 4楼 发表于: 2011-04-06
回 2楼(linxy) 的帖子
怎么我的是这样的效果!~!?
离线lovebe
只看该作者 5楼 发表于: 2011-04-06
好多点点点~~~=.=
离线lovebe
只看该作者 6楼 发表于: 2011-04-06
我是这样写的
  1. #include <QApplication>
  2. #include <QWidget>
  3. #include <QPixmap>
  4. #include <QBitmap>
  5. #include <QPoint>
  6. #include <QPalette>
  7. #include <QMouseEvent>
  8. class myclass:public QWidget
  9. {
  10. public:
  11. myclass();
  12. protected:
  13. void mouseMoveEvent(QMouseEvent *e);
  14. void mousePressEvent(QMouseEvent *e);
  15. private:
  16. QPixmap *pixmap;
  17. QBitmap *bitmap;
  18. QPoint last,pos0;
  19. };
  20. myclass::myclass()
  21. {
  22. setGeometry(0,0,500,120);
  23. pixmap=new QPixmap(":/SetMark/Resources/titleBar.png");
  24. bitmap=new QBitmap(":/SetMark/Resources/SetMarktitleBar.png");
  25. QPalette palette;
  26. palette.setBrush(backgroundRole(), QBrush(*pixmap));
  27. setPalette(palette);
  28. setMask(*bitmap);
  29. }
  30. void myclass::mouseMoveEvent(QMouseEvent *e)
  31. {
  32. if (!(e->buttons() & Qt::LeftButton))
  33.   return;
  34. QPoint newpos = e->globalPos();
  35. QPoint upleft = pos0 + newpos - last;
  36. move(upleft);
  37. }
  38. void myclass::mousePressEvent(QMouseEvent *e)
  39. {    
  40. if (e->button() == Qt::LeftButton)
  41.   last = e->globalPos();
  42. pos0 = e->globalPos() - e->pos();
  43. }
  44. int main(int argc,char *argv[])
  45. {
  46. QApplication a(argc,argv);
  47. myclass w;
  48. w.show();
  49. return a.exec();
  50. }

离线lovebe
只看该作者 7楼 发表于: 2011-04-06
哈,问题解决了,是因为我setMask那张图片不是为纯黑色的!!!
离线qylibohao
只看该作者 8楼 发表于: 2011-04-06
楼主能否把代码和图片打包上来让我们学习一下呢,顶起。
离线bmy001
只看该作者 9楼 发表于: 2011-04-08
我记得有一个库文件可以实现毛玻璃效果(叫什么我忘了)那个可以再kde和windows上用。
我只是一个高一的学生,如有弱智问题,请大家谅解。
离线huylivecn
只看该作者 10楼 发表于: 2011-12-19
mark
离线friendbaby

只看该作者 11楼 发表于: 2011-12-20
给你aero效果的例子
qtaero.zip (23 K) 下载次数:35
Smiling is best language , can express everything , also can conceal everything.
离线半只烟
只看该作者 12楼 发表于: 2012-02-20
学习一下,呵呵
离线xuweistudy
只看该作者 13楼 发表于: 2012-02-20
实现如下:
设窗体属性为透明
布局离顶部留适合的高度
把标题栏图标,定位一下
离线wuweihua0115
只看该作者 14楼 发表于: 2012-07-16
回 6楼(lovebe) 的帖子
楼主,求请教啊?我主要也是想自定义标题栏,要怎么做呢?
离线jianc
只看该作者 15楼 发表于: 2012-12-06
回 14楼(wuweihua0115) 的帖子
惊现小五
<a href="http://www.baidu.com">baidu</a>
快速回复
限100 字节
 
上一个 下一个