网站备案 失败,网站展示英文都用什么字体,青岛专业网站建设定制,现在去长沙会被隔离吗文章目录 1、Window Frame2、windowTitle3、windowIcon4、qrc机制5、windowOpacity 1、Window Frame
在运行Qt程序后#xff0c;除了用户做的界面#xff0c;最上面还有一个框#xff0c;这就是window frame框。对于界面的元素#xff0c;它们的原点是Qt界面的左上角或win… 文章目录 1、Window Frame2、windowTitle3、windowIcon4、qrc机制5、windowOpacity 1、Window Frame
在运行Qt程序后除了用户做的界面最上面还有一个框这就是window frame框。对于界面的元素它们的原点是Qt界面的左上角或window frame左上角。比如geometry()setGeometry()是以界面左上角为原点而frameGeometry()和setFrameGeometry()是以window frame左上角为原点的。 #include QDebugWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui-setupUi(this);QRect rect1 this-geometry();QRect rect2 this-frameGeometry();qDebug() rect1;qDebug() rect2;}代码在构造函数那么如果运行直接就看还在构造阶段还看不到两个实际的区别。运用到对象上就看出来了。
// widget.h
class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();void handle();private:Ui::Widget *ui;
};// widget.cpp
#include QPushButton
#include QDebugWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui-setupUi(this);QPushButton* button new QPushButton(this);button-setText(按钮);button-move(330, 250);connect(button, QPushButton::clicked, this, Widget::handle);
}void Widget::handle()
{QRect rect1 this-geometry();QRect rect2 this-frameGeometry();qDebug() rect1;qDebug() rect2;
}2、windowTitle 只针对顶层窗口适用。修改窗口标题 拖一个按钮到界面改一下槽函数
void Widget::on_pushButton_clicked()
{this-setWindowTitle(窗口标题);
}3、windowIcon 只针对顶层窗口适用。修改窗口图标 QIcon就是一个图标。设置图标需要在本地存一个图片但是路径不带中文并且不写反斜杠\会被当成转义字符。要么/要么\。也可以用C11的raw string来解决即r()括号里直接写原路径即可
#include QIconWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui-setupUi(this);// 不在堆创建, 因为不需要依靠对象树来释放以及保障生命周期, 况且QIcon也不支持对象树// QIcon对象比较小, 设置到某个控件后它释放与否不影响图标显示QIcon icon(E:\\pexels-ithalu-dominguez-907485.jpg);this-setWindowIcon(icon);
}也可以用相对机制。
4、qrc机制
给Qt项目引入一个额外的xml文件后缀名为.qrc在这个xml中把图片导入进去并且在xml中记录。Qt在编译项目时会根据qrc中描述的图片信息找到图片内容提取出图片的二进制数据并转为C代码最终编译到exe中。最终代码里可以看到很大的char数组就是图片的二进制数据。不过这样肯定就不能往qrc里导入太大资源了。
新建一个.qrc的项目 会自动在resource后面加上.qrc。
创建完成后出现这个画面 把图片导入到qrc文件中下面有图片显示。 1、创建前缀意思是创建一个虚拟目录为了Qt能够方便地访问到这个图片。点击Add Prefix 2、导入图片图片的路径必须在此qrc文件的同级目录或子目录下点击Add Files选择文件即可 3、回到之前的项目用qrc中的图片来作为图标
Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui-setupUi(this);// 不在堆创建, 因为不需要依靠对象树来释放以及保障生命周期, 况且QIcon也不支持对象树// QIcon对象比较小, 设置到某个控件后它释放与否不影响图标显示//QIcon icon(E:\\pexels-ithalu-dominguez-907485.jpg);QIcon icon(:/pexels-ithalu-dominguez-907485.jpg);this-setWindowIcon(icon);
}生成的实时文件中会多出一个qrc_resource.cpp文件。qrc中导入的图片资源就会转成这个文件。文件中每个二进制数字表示图片中每个字节的数据。Qt项目编译时这个cpp文件被一起编译到了exe中当exe程序运行时图片的数据就加载到内存了。
5、windowOpacity
毛玻璃效果。 setWindowOpacity(float n)设置控件的不透明值。
拖两个按钮一个加一个减
void Widget::on_pushButton_add_clicked()
{float opacity this-windowOpacity();if(opacity 1.0) return;qDebug() opacity;opacity 0.1;this-setWindowOpacity(opacity);
}void Widget::on_pushButton_sub_clicked()
{float opacity this-windowOpacity();if(opacity 0.0) return;qDebug() opacity;opacity - 0.1;this-setWindowOpacity(opacity);
}不过我也可以不加if判定因为超过1.0和小于0.0的浮点数setWindowOpacity方法内部也有判定这些数字不会被设定进去。不过为了好的编写习惯还是要写上判断。
结束。