在VS编译器中使用Qt的一些常用功能笔记

运行环境:VS2019中使用QT5.13.2

1.设置整个界面背景图

setStyleSheet来设置图形界面的外观:https://blog.csdn.net/yongan1006/article/details/7414809
在这里插入图片描述

this->setStyleSheet("background-color: gray;");
this->setWindowIcon(QIcon("6.jpg"));
this->setStyleSheet("QWidget{background:write url(gray_background.jpg)}"); 

若设置背景图之后发现界面最下面或者最上面出现重叠的效果,只需在Qt设计师里面把菜单栏等状态栏移除即可。

关于中英文颜色对照表,如下:
https://www.5tu.cn/colors/yansezhongwenming.html

2.QLabel使用pixmap显示图和qss设置背景缩放图

在这里插入图片描述

3.QT界面实时显示当前日期时间(1s切换一次)

https://blog.csdn.net/qq_42482412/article/details/109477018

  • 获取带日期的时间,使用QDateTime类
QDateTime current_date_time =QDateTime::currentDateTime();
QString current_date =current_date_time.toString("yyyy.MM.dd hh:mm:ss.zzz ddd");
//current_date字符串结果为"2016.05.20 12:17:01.445 周五"

其中时间的显示格式可灵活配置,此处简单说明本实例中用到的部分:
yyyy表示年;MM表示月;dd表示日; hh表示小时;mm表示分;ss表示秒;zzz表示毫秒;ddd表示周几。

在这里插入图片描述

4.关于Qt中常用的延时方法

/* 延时函数 若要实现1秒延时,则msec的值就是:1000*/
void PlcDirectConnection::Delay_MSec(unsigned int msec)
{
    QTime _Timer = QTime::currentTime().addMSecs(msec);

    while (QTime::currentTime() < _Timer)

        QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}

参考:关于Qt中常用的延时方法

5.Qt槽机制:public slots 和 private slots

①槽是普通的 C++ 成员函数,可以被正常调用,它们唯一的特殊性就是很多信号可以与其相关联。当与其关联的信号被发射时,这个槽就会被调用。槽可以有参数,但槽的参数不能有缺省值。
②既然槽是普通的成员函数,因此与其它的函数一样,它们也有存取权限。槽的存取权限决定了谁能够与其相关联。同普通的 C++ 成员函数一样,槽函数也分为三种类型,即 public slots、private slots 和 protected slots。

public
slots:在这个区内声明的槽意味着任何对象都可将信号与之相连接。这对于组件编程非常有用,你可以创建彼此互不了解的对象,将它们的信号与槽进行连接以便信息能够正确的传递。

protected
slots:在这个区内声明的槽意味着当前类及其子类可以将信号与之相连接。这适用于那些槽,它们是类实现的一部分,但是其界面接口却面向外部。

private slots:在这个区内声明的槽意味着只有类自己可以将信号与之相连接。这适用于联系非常紧密的类。

槽也能够声明为虚函数,这也是非常有用的。
槽的声明也是在头文件中进行的。例如,下面声明了三个槽:

public slots: 
		 void mySlot(); 
		 void mySlot(int x); 
		 void mySignalParam(int x,int y);

如果是槽函数的话一定要指明它是slots 否则用不了,而public private protected 这些跟C++一样

6.QT之解决按钮显示中文乱码问题

方法:用QStringLiteral,如QStringLiteral("关闭")

(当时我使用了一个串口打开功能,即一开始点击打开,点击之后按钮变为关闭,再次点击关闭又变为打开,注意“打开”“关闭”“打开”三个状态都要统一使用QStringLiteral)

7.解决QMetaObject::connectSlotsByName: No matching signal for on_sendButton_3_clickedtest(QString)问题

原来是命名规则的问题,https://blog.csdn.net/restraint/article/details/9956449
怪不得之前看别人的源码时,既没有将控件和槽函数connect,ui文件中也没有将控件和槽函数连接,但点击按钮时,会有事件发生。

控件名
槽函数:on_控件名_信号名
会自动调用

但是,如果采用显式 connect的方法的同时,又将槽函数的名字起成了“on_控件名_信号名”的格式,那么就会在运行时弹出 “QMetaObject::connectSlotsByName: No matching signal for”的警告了!

8.QString与string的相互转换

//1.QString转换String
string s = qstr.toStdString();

//2.String转换QString
QString qstr2 = QString::fromStdString(s);

9.Qt中int转换为QString的方法

使用QString::number函数
原型:QString::number(long n,base=10);
第一个参数是要转行的数据,第二个参数是进制

eg.
long a = 63;
QString s = QString::number(a,10)
// s = "63"

QString t = QString::number(a,16).toUpper();
// t = "3F"

10.Qt中QString转换为int的方法

QString a;
a = "123";
int b;
b = a.toInt();

11.double 转换为QString的方法

  • 不指定小数位数
double value = 1.2345
QString str = QString("%1").args(double value = 1.2345);
  • 指定小数位数
double value = 1.2345
QString str = QString::number(value, 'f', 2);
//QString::number(double n, char format = 'g', int precision = 6)
//Format Meaning
//e  format as [-]9.9e[+|-]999
//E  format as [-]9.9E[+|-]999
//f  format as [-]9.9
//g  use e or f format, whichever is the most concise
//G  use E or f format, whichever is the most concise

12.QString转为float

QString str = ui->le_set_gain->text();
float gain = str.toFloat();

13.Qt错误记录registered using qRegisterMetaType()

在Qt中使用多线程时,需要将信号函数和槽函数通过connect连接,有时候在信号函数中可能出现Qt未注册的数据类型,需要通过注册下类型。

错误:

QObject::connect: Cannot queue arguments of type 'int&'
(Make sure 'int&' is registered using qRegisterMetaType().)

解决方法:
一般在main.cpp文件中调用qRegisterMetaType()方法注册类型。

#include <QMetaType>

qRegisterMetaType<int>("int&");
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用vs制作音乐播放器和使用Qt制作音乐播放器在很多方面有一些相似之处,但也有一些显著的差异。 首先,无论是使用vs还是Qt,都可以实现创建一个图形界面的音乐播放器。通过使用图形界面,用户可以更直观地浏览和操作音乐文件。无论是选择vs还是Qt,都可以通过拖放控件、设置按钮和进度条等来构建用户友好的界面。 然而,vsQt的工作方式有所不同。在使用vs时,开发者通常会使用C#或C++等语言来编写代码。vs提供了一系列的图形界面设计工具,如Windows Forms或WPF,可以方便地创建图形界面。通过使用.NET Framework等库,可以轻松处理音乐文件的读取和播放。 相比之下,Qt是一个跨平台的开发框架,使用C++语言编写代码。Qt在图形界面开发方面拥有强大的功能和灵活性。通过使用Qt的库和类,可以轻松实现音乐文件的读取、解码和播放功能Qt还提供了丰富的UI控件和可定制化的样式,以满足开发者对音乐播放器界面的自定义需求。 另一个重要的区别是vsQt的适用平台不同。使用vs创建的音乐播放器主要运行在Windows操作系统上,而使用Qt创建的音乐播放器可以在多个操作系统上运行,包括Windows、Linux和Mac OS等。这意味着,如果开发者希望将音乐播放器应用到不同的平台上,选择Qt可能更具有优势。 总而言之,在选择vs还是Qt制作音乐播放器时,需要考虑开发者的编程经验、目标平台和需求,然后选择最适合的工具和技术来实现功能丰富的音乐播放器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

boss-dog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值