QT界面开发杂记(二)

为了解决渲染之后有锯齿的问题使用drawText绘制文本

但是遇到新的问题做成通用控件后不适应长度过长换行

有问题找度娘ヽ( ̄▽ ̄)ノ改为调用下面的函数,且将flags设置为Qt::TextWordWrap即可


//控件不接受焦点即用户鼠标和键盘不能对控件进行任何操作

setFocusPolicy(Qt::NoFocus);

Qt::TabFocus             //可以通过通过Tab键接受焦点
Qt::ClickFocus           //可以通过单击接受焦点
Qt::StrongFocus          //TabFocus | ClickFocus | 0x8
Qt::WheelFocus           //可以通过使用鼠标滚轮接受焦点
Qt::NoFocus              //不接受焦点。

返回相对显示器的全局坐标(获取光标全局坐标位置)

QCursor().pos()或者用QMouseEvent::globalPos() 

QPoint QCursor::pos() [static] 

调用mapTo程序崩溃mapTo(m_page,QCursor().pos()):
mapTo的使用说明是将小部件坐标pos转换为父组件的坐标系统,父组件不能为nullptr,而且必须是调用小部件的父组件。
正确方法是用mapFromGlobal将全局坐标转化成子窗口的坐标

m_page->mapFromGlobal(QCursor().pos())
mapTo是已知当前控件的坐标,求相对于父控件的位置
mapFrom是已知父控件的坐标,求相对于当前的位置

渐变色qss
垂直渐变
qlineargradient(spread:pad, x1:0, y1:0, x2:0, y2:1, stop:1 #FF0000, stop:0 #00FF00)
水平渐变
qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:1 #FF0000, stop:0 #00FF00)
x1,y1是起点位置
x2,y2是起点位置

设置进入widget改变手型

setCursor(QCursor(Qt::PointingHandCursor));

widget的重绘函数
void QWidget::paintEvent(QPaintEvent *event)
This event handler can be reimplemented in a subclass to receive paint events passed in event.
A paint event is a request to repaint all or part of a widget. It can happen for one of the following reasons:

repaint() or update() was invoked,
the widget was obscured and has now been uncovered, or
many other reasons.

此事件处理程序可以在子类中重新实现

调用了repaint()或update()可以对小部件的全部或部分重新绘制

当这个小部件遮挡或者被发现许多其他原因也会被重绘

void MyButton::paintEvent(QPaintEvent *event)
{
        //---------------------------------------------
        QWidget::paintEvent(event);
}

猜你喜欢

转载自blog.csdn.net/caicai_xiaobai/article/details/121427847