qt常用基本类

文章目录

      • 点直线
        • 时间相关的类

qt里面打印log或者打印东西,自带打印函数qDebug

里面<<插入操作符可以写任意类型

qDebug()<<"im  ssss"<<520;  //默认给你带换行
                  //也能加endl,那就多换一行

qt常用基本类_第1张图片

并不是说printf或者cout就不能用了,只要引入对应头文件就行。

qt里面有自己一套api和c/c++的api都是对应通用的

#include
using namespace std;
#include "stdio.h" 

    cout<<"nihao"<<endl;
    printf("sadasd\n");

qt里面的QByteArray类型就是c的字符数组char*套一层壳子

QString就是给字符串套层壳子,他是QByteArray的更深一层封装

反正就是字符串的意思。QByteArray和QString基本差不多

就当STL的string用就行

#include 
#include 
#include   
	QByteArray ab="=QByteArray()";
    qDebug()<<ab;
    qDebug()<<ab.size();
    for(auto x:ab)
    {
        qDebug()<<x;
    }
    QString as="hello QString";
    qDebug()<<as;
    for(auto it=ab.begin();it!=ab.end();++it)
    {
        qDebug()<<*it;
    }

qt的这些类型能互相转换,也能转换为标准c++的string,反正api用到去查就行

QVariant类,这个类型充当着最常见的数据类型的联合,提供大量的api可以进行类型的转换

// 使用设置函数也可以将支持的类型的数据设置到QVariant对象中
// 这里的 T 类型, 就是QVariant支持的类型
void QVariant::setValue(const T &value);
// 该函数行为和 setValue() 函数完全相同
[static] QVariant QVariant::fromValue(const T &value);
// 例子:
#if 1
QVariant v;
v.setValue(5);
#else
QVariant v = QVariant::fromValue(5);
#endif
int i = v.toInt();          // i is now 5
QString s = v.toString();   // s is now "5"

做到多个重载函数或者模板的效果:

QVariant MainWindow::add_data(QVariant a,QVariant b)
{
    QVariant res;
    if(a.type()==QVariant::Int&&b.type()==QVariant::Int)
    {
        res=a.toInt()+b.toInt();
    }
    else if(a.type()==QVariant::String&&b.type()==QVariant::String)
    {
        res.setValue(a.toString()+b.toString());
    }
    return res;
}


int main()
{
     QApplication a(argc, argv); //创建了一个应用程序的对象,只有一个
       MainWindow w;   //创建了一个窗口对象


    int v1=w.add_data(10,20).toInt();//c++类型做了 隐士转换
    qDebug()<<v1;
    QString v2=w.add_data("hi","llo").toString();
    qDebug()<<v2;
      w.show();        //显示窗口

    return a.exec();   //阻塞函数,程序进入了事件循环

}

这样通过QVariant来做类型转换,但我感觉还不如写模板

点直线

    QLine line(QPoint(100,200),QPoint(200,300));
    QLine newline=line.translated(20,50);
    qDebug()<<"前:"<

在 QT 中 QSize 类用来形容长度和宽度

// 构造函数
// 构造空对象, 对象中的宽和高都是无效的
QSize::QSize();
// 使用宽和高构造一个有效对象
QSize::QSize(int width, int height);

// 设置宽度
void QSize::setWidth(int width)
// 设置高度
void QSize::setHeight(int height);

// 得到宽度
int QSize::width() const;
// 得到宽度的引用
int &QSize::rwidth();
// 得到高度
int QSize::height() const;
// 得到高度的引用
int &QSize::rheight();

// 交换高度和宽度的值
void QSize::transpose();
// 交换高度和宽度的值, 返回交换之后的尺寸信息
QSize QSize::transposed() const;

// 进行算法运算: 加减乘除
QSize &QSize::operator*=(qreal factor);
QSize &QSize::operator+=(const QSize &size);
QSize &QSize::operator-=(const QSize &size);
QSize &QSize::operator/=(qreal divisor);

QRect矩形类,他集合了前面的坐标和尺寸

// 构造函数
// 构造一个空对象
QRect::QRect();
// 基于左上角坐标, 和右下角坐标构造一个矩形对象
QRect::QRect(const QPoint &topLeft, const QPoint &bottomRight);
// 基于左上角坐标, 和 宽度, 高度构造一个矩形对象
QRect::QRect(const QPoint &topLeft, const QSize &size);
// 通过 左上角坐标(x, y), 和 矩形尺寸(width, height) 构造一个矩形对象
QRect::QRect(int x, int y, int width, int height);

// 设置矩形的尺寸信息, 左上角坐标不变
void QRect::setSize(const QSize &size);
// 设置矩形左上角坐标为(x,y), 大小为(width, height)
void QRect::setRect(int x, int y, int width, int height);
// 设置矩形宽度
void QRect::setWidth(int width);
// 设置矩形高度
void QRect::setHeight(int height);

// 返回值矩形左上角坐标
QPoint QRect::topLeft() const;
// 返回矩形右上角坐标
// 该坐标点值为: QPoint(left() + width() -1, top())
QPoint QRect::topRight() const;
// 返回矩形左下角坐标
// 该坐标点值为: QPoint(left(), top() + height() - 1)
QPoint QRect::bottomLeft() const;
// 返回矩形右下角坐标
// 该坐标点值为: QPoint(left() + width() -1, top() + height() - 1)
QPoint QRect::bottomRight() const;
// 返回矩形中心点坐标
QPoint QRect::center() const;

// 返回矩形上边缘y轴坐标
int QRect::top() const;
int QRect::y() const;
// 返回值矩形下边缘y轴坐标
int QRect::bottom() const;
// 返回矩形左边缘 x轴坐标
int QRect::x() const;
int QRect::left() const;
// 返回矩形右边缘x轴坐标
int QRect::right() const;

// 返回矩形的高度
int QRect::width() const;
// 返回矩形的宽度
int QRect::height() const;
// 返回矩形的尺寸信息
QSize QRect::size() const;

举个demo:

    QRect qq(5,5,10,30);
    QPoint p=qq.bottomLeft();
    qDebug()<<"后:"<<p;
    int mly=qq.y();
    qDebug()<<"y:"<<mly;

时间相关的类

QDate日期 ,第二种写法里面就是format格式化,查帮助文档看看有很多的

    //获取当前日期
    QDate qd=QDate::currentDate();
    //1
    qDebug()<<"年:"<<qd.year()<<"月:"<<qd.month()<<"日:"<<qd.day();
    //2
    QString str=qd.toString("yyyy-MMMM-dddd-dd");
    qDebug()<<"date:"<<str;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2wno5W8r-1685884305607)(../AppData/Roaming/Typora/typora-user-images/image-20230604204639796.png)]

QTime时间封装到毫秒

    QTime time(20,12,24);//h m s ms
    QTime t;
    t=time.addSecs(60);
    t=time.addMSecs(1000); //毫秒和秒是1000进制
    QString arr=t.toString("h:m:s:zzz");
    qDebug()<<"time:"<<arr;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IeOxscaM-1685884305608)(../AppData/Roaming/Typora/typora-user-images/image-20230604205838732.png)]

QDateTime类就是上面俩结合体,就跟上面矩阵类一样

// 构造函数
QDateTime::QDateTime();
QDateTime::QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec spec = Qt::LocalTime);

// 公共成员函数
// 设置日期
void QDateTime::setDate(const QDate &date);
// 设置时间
void QDateTime::setTime(const QTime &time);
// 给当前日期对象追加 年/月/日/秒/毫秒, 参数可以是负数
QDateTime QDateTime::addYears(int nyears) const;
QDateTime QDateTime::addMonths(int nmonths) const;
QDateTime QDateTime::addDays(qint64 ndays) const;
QDateTime QDateTime::addSecs(qint64 s) const;
QDateTime QDateTime::addMSecs(qint64 msecs) const;

// 得到对象中的日期
QDate QDateTime::date() const;
// 得到对象中的时间
QTime QDateTime::time() const;

// 日期和时间格式, 格式字符参考QDate 和 QTime 类的 toString() 函数
QString QDateTime::toString(const QString &format) const;


// 操作符重载 ==> 日期时间对象的比较
bool QDateTime::operator!=(const QDateTime &other) const;
bool QDateTime::operator<(const QDateTime &other) const;
bool QDateTime::operator<=(const QDateTime &other) const;
bool QDateTime::operator==(const QDateTime &other) const;
bool QDateTime::operator>(const QDateTime &other) const;
bool QDateTime::operator>=(const QDateTime &other) const;

// 静态函数
// 得到当前时区的日期和时间(本地设置的时区对应的日期和时间)
[static] QDateTime QDateTime::currentDateTime();

举个例子:

    QDateTime dta(QDate::currentDate(),QTime::currentTime());
    QString ptr=dta.toString("yyyy/MM/dddd/dd----ap:HH:mm:ss:zzz");
    qDebug()<<"date-time:"<<ptr;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aAul4FoY-1685884305609)(../AppData/Roaming/Typora/typora-user-images/image-20230604210954855.png)]

你可能感兴趣的:(Qt,qt,开发语言)