【转】Qt实现具有反锯齿的圆角窗口:不规则窗口

 

 

在Qt里实现这个功能一点也不难:

1. 使用Photoshop做出不规则窗口效果,或者使用反锯齿功能在Widget上绘制背景,就是普通的绘图。

2. 创建主窗口widget,设置他的

 
  1. window->setWindowFlags(Qt::FramelessWindowHint);  
  2. window->setAttribute(Qt::WA_TranslucentBackground); // ****这里很重要****  

 

3. 在widget上实现鼠标拖动事件移动窗口或改变窗口大小

Widget.cpp实现

 
  1. #include<QtGui/QPainter>  
  2. Widget::Widget(QWidget*parent): QWidget(parent), ui(newUi::Widget){  
  3.      ui->setupUi(this);  
  4.      pixmap.load("bg.png");  
  5. }  
  6.   
  7. voidWidget::paintEvent(QPaintEvent*){  
  8.      QPainterpainter(this);  
  9.      painter.drawPixmap(0,0,pixmap.scaled(this->size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)); // 绘制不规则背景  
  10. }  

 

main.cpp实现

 
  1. intmain(intargc,char*argv[]){  
  2.      QApplicationa(argc,argv);  
  3.   
  4.      QWidget*window=newQWidget();  
  5.      QGridLayout*layout=newQGridLayout();  
  6.      Widget*w=newWidget();  
  7.      layout->addWidget(w);  
  8.      window->setLayout(layout);  
  9.      window->setWindowFlags(Qt::FramelessWindowHint);  
  10.      window->setAttribute(Qt::WA_TranslucentBackground);  
  11.      window->show();  
  12.      returna.exec();  
  13.   
  14. }  

 

 
 

 

转载:http://www.cppblog.com/biao/archive/2011/10/12/158175.html

相关文章: