QT笔记记录

  • 字符串:+,+=将一个字符串追加到另一个字符串的末尾

QString str1 = "welcome";

str1 = str1+"to you!";

str1+="to you!";

QString::append()功能与+=操作符一样

QString str1 = "welcome";

QString str2 = "to";

str1.append(str2);

QString::sprintf()

QString str1;

str1.sprintf("%s","welcome");

QString::arg()函数

QString::trimmed():移除字符串两端的空白字符
QString::simplified():移除字符串两端的空白字符,使用单个空格字符代替空白字符
QString::startsWith():判断一个字符串是否以某个字符串开头
QString::endsWith():判断一个字符串是否以某个字符串结尾
QString::contains():判断一个指定字符串是否出现过

QString str1 = "welcome to you!";

str1.startsWith/endsWith/contains("welcome",QT::CaseSensitive);

  • 比较字符串:operator</<=/==/>=(const QString&);

    localAwareCompare(const QString&,const QString&)

    比较前后两个字符串

    compare(const QString&,const QString&,QT::CaseSensitive)指定是否进行大小写比较

  • 字符串转换:QString::toInt(&ok,16):将字符串转为整型,ok是bool类型的,转换成功为true,16为转换基数

    复制代码
     QString::toDouble():
     QString::toFloat():
  • 容器类

QList:子类有QItemSlection、QQueue、QStringSpy,QStringList,QTestEventList

QLinkedList:链式列表,以非连续内存块保存数据,不能使用下标,使用迭代器访问它的数据项

QVector:

QVariant类:类似于c++的联合数据类型:QColor、QFont、QOpen、QRect、QString和QSize

  • QString类采用隐式共享技术,将深拷贝和浅拷贝有机地结合起来

QString str1="data";//初始化一个内容为data的字符串

QString str2 = str1;//对str2赋值时,发生一次浅拷贝,导致两个QString对象都指向同一个数据结构,该数据结构还保存了一个引用计数器

str23='e';//对QString对象str2修改导致一次深拷贝,使str2对象指向一个新的、不同于str1的数据结构

str0='f';//进一步对str2修改

str1=str2;//str1和2都指向字符串为fate的数据结构

  • 基本布局:QLayout,布局中常用的方法有:addWidget()和addLayout(),addWidget()方法用于向布局中加入需要布局的控件,addLayout()方法用于向布局中加入需要布局的子布局。

  • 标准文件对话框(QFileDialog)、标准颜色对话框(QColorDialog)、标准字体对话框(QFontDialog)、标准输入对话框(QInputDialog)以及消息对话框(QMessageBox)

    消息对话框中有Question消息框,使用QMessageBox::question()函数实现

    Information、Warning、Critical、About Qt同上 自定义消息框:Custom

  • 工具盒类:(QToolBox)QToolBox提供了一种列状的层叠窗体,QToolButton提供了一种快速访问命令或选择项的按钮,通常在工具条中使用。

  • 进度条:进度条对话框分模态方式和非模态方式,模态方式必须使用QApplication::processEvent()使事件循环保持正常进行状态确保应用不阻塞,非模态方式需要通过QTime实现定时设置进度条的值。

  • 调色板与电子钟:QPlette类 QPlette::Active:获得焦点的状态 QPlette;;Inactive:未获得焦点的状态

    QPlette::Disable:不可用状态

  • ColorRole指的时颜色主题,即对窗体中不同部位颜色的分类 QPalette::Window 指背景色

    QPalette:WindowText指前景色

  • setColor()函数 void QPlette::setColor(ColorGroup group,ColorRole

    role,const QColor &color);//对主题颜色设置的同时区分了状态

    void QPlette::setColor(ColorRole role,const QColor &color);

    setBackgroundColor()函数在QT5中被禁止,都由QPalette类管理

    xxx->setAutoFillBackground(true); QPalette p= xxx->palette();

    p/setColor(QPalette::Window,color);//p.setBrush(QPalette::Window,brush);//通过画刷设置对显示进行修改

    xxx->setPalette§;

  • QTimer类:QTime的currentTime()函数用于获取当前的系统事件;QTime的toString()函数用于将获取的当前时间转换为字符串类型,toString()函数的参数需指定转换后时间的显示格式。

    可根据实际需要进行格式设置,例 hh:mm:ss A 22:20:10 PM H:mm:s a 10:20:8 pm

    QTime的toString()函数也可以直接利用Qt::DateFormat作为参数指定时间显示的格式,如Qt::TextDate\Qt::ISODate\Qt::LocalDate

  • 可扩展对话框:setSizeConstraint(QLayout::SetFixedSize)方法使对话框尺寸保持相对固定

    对话框中调用:Layout->setSizeConstrain(QLayout::SetFixedSize);

    这个设置保证了对话框尺寸相对固定,不能利用拖曳改变大小

  • QSlashScreen类实现了在程序启动过程中显示启动画面的功能

  • QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(menu bar)、多个工具栏(tool

    bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)以及一个中心部件(central

    widget),为了实现菜单、工具栏等命令的一致性,Qt使用动作(Action)来表示这些命令。Qt的菜单就是由一系列的QAction动作对象构成的列表。

  • QMatrix类图像坐标变换:setScaledContents设置该控件的scaleContents属性,确定是否根据其大小自动调节内容大小。,设置值有true和false

    ShowMirrirVertical()函数实现的是图形的纵向镜像,showMirrorHorizontal()实现的是横向镜像,通过QImage::mirrored(bool

    horizontal,bool vertical)实现图形的镜像功能。 文本编辑功能:

  • 位置相关函数:x()、y()、pos()函数的作用获得整个窗体左上角的坐标位置。

    frameGeometry()与geometry()函数对应,前面获得整个窗体的左上顶点和长宽值,后者获得窗体内中央区域的左上顶点坐标以及长宽值

    直接调用width()和height()获得的是中央区域的长宽值

    rect()、size()函数:后者获得的是窗体中央区域的长宽值,前者获得左上顶点相对于父窗体而言的坐标。

  • 绘图框架设计:PaintArea类继承自QWidget类,setShape()设置形状,setPen()设置画笔,setBrush设置画刷,setFillRule()设置填充模式,paintEvent()重画事件。

    绘图:DrawWidget类继承自QWidget类,在类声明中对鼠标事件mousePressEvent()和mouseMoveEvent()、重画事件paint

    Event()以及尺寸变化事件resizeEvent()进行了重定义。setStyle()、setWidth()以及setColor()函数主要用关于为主窗口传递各种与绘图有关的参数。

  • SVG格式图片: #include #include #include

  • 图形视图体系结构:Graphics

    View框架结构主要包含三大类,场景类(QGraphicsScene)、视图类(QGraphicsView)和图元类(QGraphicsItem)

  • QT中的坐标系:左上角为0,0点,x以右为正方向,y以下为正方向。

    信号和槽:connect(信号的发送者,发送的具体信号(函数的地址),信号的接收者,信号的处理(槽)(函数的地址))

    信号槽的优点:松散耦合,信号发送端和接收端本身是没有关联的,通过connect连接,将两端耦合在一起。 连接函数:connect

    信号可以连接信号。 一个信号可以连接多个槽函数。 多个信号可以连接同一个槽函数。 信号和槽函数类型必须一一对应。

    信号和槽的参数个数不需一致,信号参数个数可以多于槽参数的个数 信号也可以断开。

  • lambda表达式,5.4之前的需要加上CONFIG += C++11

    更改名字,值传递方式,= 函数体内可以使用lambda所在范围内所有可见的局部变量

    & 函数体内可以使用lambda所在范围内所有可见的局部变量,引用传递方式。错误率较高

    this,函数体内可以使用lambda所在类中成员变量 例子: ={

    btn->setText("CLASS IS OVER");

    }//函数声明();函数调用

  • mutable关键字用来修饰值传递的变量,修改的是拷贝,而不是本体 QPushButton *myBtn = new

    QPushButton(this); QPushButton *myBtn2 = new QPushButton(this);

    myBtn2->move(100,100); int m =0;

    connect(myBtn,&QPushButton::clicked,this,mmutable{m =

    100+10;qDebug()<<m;});

    connect(myBtn2,&QPushButton::clicked,this,={qDebug()<<m;});

    //->返回值类型,标识函数返回值的类型 int ret = <>->int{return 1000;}();

    qDebug()<<"ret = ";

    }

  • //创建多级菜单,使用treeView方式

    复制代码
    QToolBar *toolbar = new QToolBar(this);
    addToolBar(Qt::TopToolBarArea,toolbar);
    toolbar->setMovable(false);
    toolbar->addAction("导入工程");
    toolbar->addAction("另存为工程");
    
    QStandardItemModel *Model = new QStandardItemModel(ui->treeView);
    Model->setHorizontalHeaderLabels(QStringList()<<"菜单");
    QStringList PrimaryMenu,SecondMenu,ThirdMenu;
    QList<int> MenuLength;
    PrimaryMenu<<"SPI模块"<<"I2C模块";
    SecondMenu<<"SPI接口配置"<<"SPI故障注入"<<"I2C接口配置"<<"I2C故障注入";
    ThirdMenu<<"通道1"<<"通道2";
    MenuLength<<1<<2;
    int Sta=0;
    for(int i=0;i<PrimaryMenu.length();i++)
    {
        QString SubPrimaryMenu = PrimaryMenu[i];
        QList<QStandardItem *> MenuItem1;
        QStandardItem *Item1 = new QStandardItem(SubPrimaryMenu);
        MenuItem1.append(Item1);
        Model->appendRow(MenuItem1);
        for(int j=0;j<2;j++)
        {
            QList<QStandardItem *> MenuItem2;
            QStandardItem *Item2 = new QStandardItem(SecondMenu[Sta+j]);
            MenuItem2.append(Item2);
            Item1->appendRow(MenuItem2);
            for(int k=0;k<2;k++)
            {
                QList<QStandardItem *> MenuItem3;
                QStandardItem *Item3 = new QStandardItem(ThirdMenu[k]);
                MenuItem3.append(Item3);
                Item2->appendRow(MenuItem3);
            }
        }
        Sta +=  2;
    }
    ui->treeView->setModel(Model);
    ui->treeView->setEditTriggers(QAbstractItemView::NoEditTriggers);
    ui->treeView->expandAll();
相关推荐
布朗克1681 小时前
Go 入门到精通-08-复合类型之数组与切片
开发语言·后端·golang·数组与切片
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第151题】【06_Spring篇】第11题:说一下 Spring Bean 的生命周期?
java·开发语言·后端·spring·面试
广州浮点FLOATLIC2 小时前
Creo 许可证利用率怎么优化:制造企业该先看共享规则,还是先看模块占用结构
java·开发语言
wuyk5552 小时前
21. 嵌入式面试避坑指南:sizeof 是关键字,不是函数!
c语言·开发语言·stm32·单片机·嵌入式硬件
2601_962440842 小时前
计算机毕业设计之jsp教室管理系统
java·开发语言·笔记·分布式·算法·课程设计·推荐算法
澈2075 小时前
QT入门第十一天:数据库编程(上)SQLite入门与增删改查 | 零基础学QT
数据库·qt·sqlite
十月的皮皮5 小时前
C语言学习笔记20260703-牛牛与后缀表达式(逆波兰表达式)
c语言·笔记·学习
用户805533698035 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner5 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt