• 9736阅读
  • 6回复

【提问】如何用QT做异型窗口? [复制链接]

上一主题 下一主题
离线shengvic
 

只看楼主 倒序阅读 楼主  发表于: 2006-02-13
As title!
离线XChinux

只看该作者 1楼 发表于: 2006-02-13
异型窗口是指??
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线shengvic

只看该作者 2楼 发表于: 2006-02-14
就是任意形状的窗口或者控件,在VC里可以用SetWindowRgn来实现。
离线haulm

只看该作者 3楼 发表于: 2006-02-21
是个难点啊,我只实现了去除标题栏,在命令行能显示不规则窗体,但在KDE桌面双击运行却还是四方体,郁闷,所以还是请能人为此问题专写一个程序来解惑。
Qt3:
  1. #include <qapplication.h>
  2. #include <qwidget.h>
  3. #include <qpixmap.h>
  4. #include <qbitmap.h>
  5. #include <qpoint.h>
  6. class myclass:public QWidget
  7. {
  8.      public:
  9.            myclass(QWidget *parent = 0, const char *name = 0 );
  10.      protected:
  11.            void mouseMoveEvent(QMouseEvent *e);
  12.            void mousePressEvent(QMouseEvent *e);
  13.      private:
  14.            QPixmap *pixmap;
  15.            QBitmap *bitmap;
  16.            QPoint oldpos;
  17. };
  18. myclass::myclass(QWidget *parent, const char *name)
  19.      : QWidget( parent, name,
  20.                  Qt::WStyle_Customize | Qt::WStyle_NoBorder)
  21. {
  22.      setMaximumSize(120,120);
  23.      setMinimumSize(120,120);
  24.      move(300,300);
  25.      pixmap=new QPixmap("tmp.png");
  26.      bitmap=new QBitmap("mask.png");
  27.      setPaletteBackgroundPixmap(*pixmap);
  28.      setBackgroundOrigin( QWidget::WindowOrigin );
  29.      setMask(*bitmap);
  30.            if ( autoMask() ){
  31.            updateMask();}
  32. }
  33. void myclass::mouseMoveEvent(QMouseEvent *e)
  34. {
  35.      if(e->state()==LeftButton)
  36.      {
  37.            QPoint tmppos;
  38.            tmppos=e->pos();
  39.            tmppos=pos()+(tmppos-oldpos);
  40.            move(tmppos);
  41.      }
  42. }
  43. void myclass::mousePressEvent(QMouseEvent *e)
  44. {
  45.      oldpos=e->pos();
  46. }
  47. int main(int argc,char *argv[])
  48. {
  49.      QApplication a(argc,argv);
  50.      myclass w;
  51.      a.setMainWidget(&w);
  52.      
  53.      w.show();
  54.      return a.exec();
  55. }
离线XChinux

只看该作者 4楼 发表于: 2006-02-23
http://www.qobject.com/bbs/htm_data/13/0602/82.html
关键代码:

#include <QApplication>
#include <QBitmap>
#include <QPixmap>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPixmap maskBitmap("IMGA0552.JPG");
QPushButton a("HELLO");
a.setMask(maskBitmap.createHeuristicMask()); //设定蒙板片
a.setWindowOpacity (1);
a.show();
return app.exec();
}
[ 此贴被XChinux在2006-02-22 18:35重新编辑 ]
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线haulm

只看该作者 5楼 发表于: 2006-02-27
问题早解决了,双击运行时,KDE不认程序中的相对路径,所以出现只能在指令运行的状况。
离线XChinux

只看该作者 6楼 发表于: 2006-02-27
写脚本设置环境变量然后运行这个脚本来使其运行。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个