Qt总结二十一:Qt控件一(QWidget)

构造函数

QWidget(QWidget *parent = 0, Qt::WindowFlags f = 0);  

 其中参数 parent 指向父窗口,如果这个参数为 0,则窗口就成为一个顶级窗口
       参数 f 是构造窗口的标志,主要用于控制窗口的类型和外观等,有以下常用值。

  1.  Qt::FramelessWindowHint:没有边框的窗口。
  2.  Qt::WindowStaysOnTopHint:总是最上面的窗口。
  3. Qt::CustomizeWindowHint:自定义窗口标题栏,以下标志必须与这个标志一起使用才有效,否则窗口将有默认的标题栏。
  4. Qt::WindowTitleHint:显示窗口标题栏。
  5. Qt::WindowSystemMenuHint:显示系统菜单。
  6. Qt::WindowMinimizeButtonHint:显示最小化按钮。
  7. Qt::WindowMaximizeButtonHint:显示最大化按钮。
  8. Qt::WindowMinMaxbuttonHint:显示最小化按钮和最大化按钮。
  9. Qt::WindowCloseButtonHint:显示关闭按钮。

示例:

ui.widget->setWindowFlags(Qt::FramelessWindowHint);//设置没有边框的窗口

独立窗口
       窗口构造的时候如果有 Qt::Window 标志,那么它就是一个独立窗口,否则
       就是一个依附于其他独立窗口的窗口部件。顶级窗口一定是独立窗口,但独立窗
       口不一定是顶级的,它可以有父窗口,当父窗口被析构时它也会随之被析构。独立窗口一般
       有自己的外边框和标题栏,可以有移动、改变大小等操作。
       一个窗口是否为独立窗口可用下面的成员函数来判断:

bool isWindow() const;     // 判断是否为独立窗口  

      

        下面这个函数可以得到窗口部件所在的独立窗口。
        

QWidget *window() const;      // 所得所在的独立窗口  
QString windowTitle() const;    // 获得窗口标题  
void setWindowTitle(const QString &text);    // 设置窗口标题为 text 


        当然,如果窗口本身就是独立窗口,那么得到的就是自己。
        而下面这个函数可以得到窗口的父窗口:
        

QWidget *parentWidget() const;    // 得到父窗口 

 示例: 

ui.widget->setWindowTitle(QString::fromLocal8Bit("QWidget窗口"));//设置窗口标题
QWidget *parentWidget = ui.widget->parentWidget();//得到父窗口

 几何参数

//几何参数,窗口的大小和位置:包括外边框和内边框
	ui.widget->setGeometry(200, 50, 100, 100);//设置客户区几何参数  
	int x = ui.widget->geometry().x();       //获取几何区的x坐标
	int y = ui.widget->geometry().y();       //获取几何区的y坐标
	int w = ui.widget->geometry().width();   //获取几何区的w宽
	int h = ui.widget->geometry().height();  //获取几何区的h高
	//几何参数,外边框大小
	int wo = ui.widget->frameSize().width();//大小
	int ho = ui.widget->frameSize().height();
	int woo = ui.widget->frameGeometry().width();//大小和尺寸
	int hoo = ui.widget->frameGeometry().height();
	

 

这里虽然没有直接设置外边框几何参数的函数,但客户区几何参数变化之后,外边框的几何参数也会随之变化。设置几何参数可能会使窗口的位置及大小发生变化,这时会发送窗口移动事件 QMoveEvent,如果大小有变化,还会发送窗口改变大小事件 QResizeEvent,事件的处理函数分别是 moveEvent 和 resizeEvent。注意这里的坐标都是相对于父窗口的,因此移动一个窗口并不导致它的所有部件都接收到移动事件。

   注意:不要在 moveEvent 或 resizeEvent 两个事件处理函数中设置几何参数,否则将导致无限循环窗口的几何参数也可以由用户的操作改变,这时也会发送相应的事件。为了方便使用,与几何参数相关的成员函数还有以下这些:

    int posx = ui.widget->pos().x();//窗口左上角位置
    int posy = ui.widget->pos().y();//
    int ox = ui.widget->x();//窗口左上角坐标
    int oy = ui.widget->y();
    int sizew = ui.widget->size().width();//客户区宽度
    int sizeh = ui.widget->size().height();
    //改变属性用到的成员函数
    ui.widget->move(250, 50);    //外边框
    ui.widget->resize(150, 150); //客户区

 可见性与隐藏性

	bool a = ui.widget->isVisible();//判断是否可见
	bool b = ui.widget->isHidden();//判断是否隐藏
	ui.widget->setVisible(true);//设置可见
	ui.widget->setHidden(true);//设置隐藏
	//窗口最大最小化,全屏
	ui.widget->showMinimized();//最小化--槽函数
	ui.widget->showMaximized();//最大化
	ui.widget->showFullScreen();//全屏

 设置字体

	ui.widget->setFont(QFont("yahei", 50, 50));

 

鼠标事件

//鼠标事件
	virtual void mousePressEvent(QMouseEvent *event);                               // 鼠标键按下  
	virtual void mouseReleaseEvent(QMouseEvent *event);                            // 鼠标键松开  
	virtual void mouseDoubleCllckEvent(QMouseEvent *event);                       // 鼠标键双击  
	virtual void mouseMoveEvent(QMouseEvent *event);                               // 鼠标移动  
	virtual void enterEvent(QEvent *event);                                                // 鼠标进入窗口  
	virtual void leaveEvent(QEvent *event);                                                // 鼠标离开窗口  
	virtual void wheelEvent(QWheelEvent *event);                                       // 鼠标滚轮移动

这里通过 QMouseEvent 事件的成员函数可获得关于鼠标的信息,如:
    

    const QPoint &pos() const;                                                             // 得到鼠标坐标(相对于接收事件的窗口)  
    int x()  const;                                                                              // 得到鼠标横坐标(相对于接收事件的窗口)  
    int y() const;                                                                               // 得到鼠标纵坐标(相对于接收事件的窗口)  
    const QPoint &globalPos() const;                                                     // 得到鼠标坐标(全局坐标)  
    int globalX() const;                                                                        // 得到鼠标横坐标 (全局坐标)  
    int globalY() const;                                                                        // 得到鼠标纵坐标 (全局坐标)  
    Qt::MouseButton button() const;                                                       // 得到引起事件的鼠标键  
    Qt::MouseButtons buttons() const;                                                    // 得到事件发生时的鼠标键状态

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值