Qt学习记录(13.5)复习,慎点

前言:(十二)(十三)的复习时找到的一些奇怪知识点

刺刺咬人!!

QComBox

QString 类提供了一系列的方法和操作,用于处理和操作 Unicode 字符串。与 C++ 标准库中的 string 类不同,QString 是一个动态分配的字符数组,可以容纳任意长度的文本

activated(QString)选项被改变时,接收字符串信息
activated(int)选项被改变时,接受选择的第几个选项,选项1对应0

QFile

  • QFile(const QString &name, QObject *parent): 构造函数,用指定的文件名和父对象创建一个QFile对象。
  • QFile(QObject *parent): 构造函数,使用父对象创建一个QFile对象。
  • QFile(const QString &name): 构造函数,使用指定的文件名创建一个QFile对象。
  • QFile(): 默认构造函数,创建一个空的QFile对象。
  • ~QFile(): 析构函数,释放QFile对象。
  • copy(const QString &newName): 复制文件到指定的新路径。
  • exists() const: 检查文件是否存在。
  • link(const QString &linkName): 创建一个硬链接到文件。
  • open(FILE *fh, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle): 通过文件句柄打开文件。
  • open(int fd, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle): 通过文件描述符打开文件。
  • remove(): 删除文件。
  • rename(const QString &newName): 重命名文件。
  • setFileName(const QString &name): 设置文件名。
  • symLinkTarget() const: 获取符号链接的目标。

 QFileDialog

QFileDialog是一个Qt类,用于创建文件对话框,提供用户选择文件或目录的界面。

它提供了多种静态函数和类方法,用于创建文件对话框,例如:

  • getOpenFileName: 打开一个文件对话框,让用户选择一个文件。(返回QString)
  • getSaveFileName: 打开一个文件对话框,让用户选择一个文件并输入文件名以保存。
  • getOpenFileNames: 打开一个文件对话框,让用户选择多个文件。
  • getExistingDirectory: 打开一个目录对话框,让用户选择一个目录。

QFileDialog类提供了多种属性和样式表,用于自定义文件对话框的外观和行为。例如:

  • setDirectory: 设置文件对话框的初始目录。
  • setNameFilter: 设置文件对话框的文件过滤器,用于限定用户选择的文件类型。
  • setDefaultSuffix: 设置文件对话框的默认文件后缀。
  • setOption: 设置文件对话框的选项,例如显示隐藏文件、只读模式等。

QFileDialog类还提供了信号和槽,用于在文件对话框打开和关闭时触发相应的操作。例如:

  • fileSelected: 用户选择了文件时触发。
  • directoryEntered: 用户输入了目录时触发。
  • fileSelected(const QString &): 用户选择了文件时触发,并返回文件路径。
  • directorySelected(const QString &): 用户选择了目录时触发,并返回目录路径。

在使用QFileDialog类时,需要确保在Qt项目中包含了QFileDialog头文件,并且链接了相应的库。

QPixmap

  • bool allGray() const: 返回 true 如果所有像素的颜色值都是灰色的,否则返回 false
  • QPixmap &operator=(QPixmap &&other): 移动构造函数,将其他 QPixmap 对象的资源移动到当前对象。
  • QPixmap &operator=(const QPixmap &pixmap): 复制构造函数,创建一个新的 QPixmap 对象,其资源与给定的 QPixmap 对象相同。
  • QPixmap &operator=(const QImage &image): 创建一个新的 QPixmap 对象,其资源与给定的 QImage 对象相同。
  • virtual ~QPixmap(): 析构函数,释放 QPixmap 对象所使用的资源。
  • QPixmap alphaChannel() const: 返回一个 QPixmap 对象,其中包含当前对象的 alpha 通道。
  • qint64 cacheKey() const: 返回一个唯一的 qint64 值,用于标识当前 QPixmap 对象。
  • bool convertFromImage(const QImage &image, Qt::ImageConversionFlags flags = Qt::AutoColor): 将 QImage 对象转换为 QPixmap 对象。
  • QPixmap copy(const QRect &rectangle = QRect()) const: 从当前 QPixmap 对象中复制一个矩形区域。
  • QPixmap copy(int x, int y, int width, int height) const: 从当前 QPixmap 对象中复制一个矩形区域。
  • QBitmap createHeuristicMask(bool clipTight = true) const: 创建一个 QBitmap 对象,其中包含当前 QPixmap 对象的掩码。
  • QBitmap createMaskFromColor(const QColor &maskColor, Qt::MaskMode mode = Qt::MaskInColor) const: 创建一个 QBitmap 对象,其中包含当前 QPixmap 对象的掩码。
  • int depth() const: 返回当前 QPixmap 对象的颜色深度。
  • void detach(): 分离当前 QPixmap 对象的资源,从而允许其他 QPixmap 对象共享相同的资源。
  • qreal devicePixelRatio() const: 返回当前设备的像素比。
  • void fill(const QColor &color = Qt::white): 用给定的颜色填充当前 QPixmap 对象。
  • bool hasAlpha() const: 返回 true 如果当前 QPixmap 对象包含 alpha 通道,否则返回 false
  • bool hasAlphaChannel() const: 返回 true 如果当前 QPixmap 对象包含 alpha 通道,否则返回 false
  • int height() const: 返回当前 QPixmap 对象的高度。
  • bool isNull() const: 返回 true 如果当前 QPixmap 对象未初始化或未加载图像,否则返回 false
  • bool isQBitmap() const: 返回 true 如果当前 QPixmap 对象是一个 QBitmap 对象,否则返回 false
  • bool load(const QString &fileName, const char \\*format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor): 从文件加载图像到当前 QPixmap 对象。
  • bool loadFromData(const uchar \\*data, uint len, const char \\*format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor): 从内存中加载图像到当前 QPixmap 对象。
  • bool loadFromData(const QByteArray &data, const char \\*format = nullptr, Qt::ImageConversionFlags flags = Qt::AutoColor): 从内存中加载图像到当前 QPixmap 对象。
  • QBitmap mask() const: 返回一个 QBitmap 对象,其中包含当前 QPixmap 对象的掩码。
  • QRect rect() const: 返回当前 QPixmap 对象的矩形区域。
  • bool save(const QString &fileName, const char \\*format = nullptr, int quality = -1) const: 将当前 QPixmap 对象保存到文件。
  • bool save(QIODevice \\*device, const char \\*format = nullptr, int quality = -1) const: 将当前 QPixmap 对象保存到设备。
  • QPixmap scaled(const QSize &size, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const: 创建并返回一个新的 QPixmap 对象,其中包含当前 QPixmap 对象的缩放版本。
  • QPixmap scaled(int width, int height, Qt::AspectRatioMode aspectRatioMode = Qt::IgnoreAspectRatio, Qt::TransformationMode transformMode = Qt::FastTransformation) const: 创建并返回一个新的 QPixmap 对象,其中包含当前 QPixmap 对象的缩放版本。
  • QPixmap scaledToHeight(int height, Qt::TransformationMode mode = Qt::FastTransformation) const: 创建并返回一个新的 QPixmap 对象,其中包含当前 QPixmap 对象的高度缩放版本。
  • QPixmap scaledToWidth(int width, Qt::TransformationMode mode = Qt::FastTransformation) const: 创建并返回一个新的 QPixmap 对象,其中包含当前 QPixmap 对象的宽度缩放版本。
  • void scroll(int dx, int dy, int x, int y, int width, int height, QRegion \\*exposed = nullptr): 将当前 QPixmap 对象的像素向右或向下滚动。
  • void scroll(int dx, int dy, const QRect &rect, QRegion \\*exposed = nullptr): 将当前 QPixmap 对象的像素向右或向下滚动。
  • void setAlphaChannel(const QPixmap &p): 设置当前 QPixmap 对象的 alpha 通道。
  • void setDevicePixelRatio(qreal scaleFactor): 设置当前 QPixmap 对象的设备像素比。
  • void setMask(const QBitmap &mask): 设置当前 QPixmap 对象的掩码。
  • QSize size() const: 返回当前 QPixmap 对象的大小。
  • void swap(QPixmap &other): 交换当前 QPixmap 对象和其他 QPixmap 对象的资源。
  • QImage toImage() const: 创建并返回一个新的 QImage 对象,其中包含当前 QPixmap 对象的像素数据。
  • QPixmap transformed(const QTransform &transform, Qt::TransformationMode mode = Qt::FastTransformation) const

QPushbutton 

边框 border-style: solid

没有 border-style: solid;的时候,无法给背景填色

  1. none:无边框。
  2. hidden:隐藏边框,但可能仍然占用空间,对于鼠标指针的交互可能有影响。
  3. dotted:点线边框。
  4. dashed:虚线边框。
  5. solid:实线边框,默认样式。
  6. double:双线边框。
  7. groove:凹槽样式(像木头上的沟槽)。
  8. ridge:凸起样式(像木头上的脊)。
  9. inset:内陷样式,边框向内凹陷。
  10. outset:外凸样式,边框向外突出。

 样式表语法?

 【QT】史上最全最详细的QSS样式表用法及用例说明_qt qss-CSDN博客

非常好的一篇样式用法

没有QWidget这样子写也可以,但是在QPushButton写的话没有红色的标记,这样的话如何才能写QPB的悬停?这时候的悬停会被覆盖(因为我在QPB的样式表里面给了字体的颜色和背景颜色是一样的,此时QPB的会覆盖QW的) 

 QPB的样式表

理想的状态是,原字体色是和背景色一样,悬停变成白色 

QPushButton样式设置_qpushbutton样式表-CSDN博客

这篇居然讲到了之前没解决的只有一个角是圆角的问题!

样式表直接改变全部按键的大小,这样子就不用一个一个改了

QPB,槽

void clicked(bool checked = false)        //点击信号(当鼠标指针在按钮范围内按下随后释放时该信号会被发出)
void pressed()                            //按下信号(按钮按下时该信号被发出)
void released()                           //释放信号(按钮释放时该信号被发出)
void toggled(bool checked)                //切换信号(checkable按钮状态改变时该信号被发出)

clicked:按下释放

pressed:按下

released:释放

void Widget::on_pushButton_7_clicked()
{
    ui->label->setStyleSheet("QLabel{background-color: rgb(255, 140, 0);}");
    ui->pushButton_7->setStyleSheet("QPushButton{color: rgb(255, 255, 255);"
                                    "background-color: rgb(255, 140, 0);"
                                    "border-style: solid;}");
}

 如果此处不再次定义按键的样式,则按键会直接变成透明

可以理解ui的样式表用来定义初始值比较好

如果有更多的操作,还是要在代码里面写,而且代码可以检测是否有效

    ui->label->setStyleSheet("QLabel{background-color: rgb(255, 140, 0);}");
    ui->pushButton_7->setStyleSheet("QPushButton{color: rgb(255, 255, 255);"
                                    "background-color: rgb(255, 140, 0);"
                                    "border-style: solid;}"
                                     "QPushButton:hover:checked {color:rgb(255,255, 255);}");
    ui->pushButton_9->setStyleSheet("QPushButton{clear;}");

QPB,按键被选中

qt之QRadioButton中选中和未被选中的两种状态使用_qt radiobutton check事件-CSDN博客

QAbstractButton 

Qt 之 QAbstractButton-CSDN博客

///按键状态///

isDown()             按钮是否被按下。

isChecked()        按钮是否被选中。只有切换按钮才能被切换为选中或不选中(请看下面)。

isEnabled()         按钮是否可以被用户按下。

setAutoRepeat()           如果用户按下按钮,按钮是否可以自动回复。

setToggleButton()        按钮是否是一个切换按钮。

可以实现多选按钮

 QAbstractButton的setCheckable(true)来设置。

QPushButton:使用setCheckable(true)设置可选中

单选

QButtonGroup:设置互斥(多选一),并将QPushButton添加至按钮组

QButtonGroup

建立按键组

QButtonGroup* ButtonGroup_color =new QButtonGroup(ui->widget_3);

这行代码只是创建了一个新的QButtonGroup对象,但是还没有将任何按钮添加到该对象中。 

将已有按键添加到按键组

就是这东西搞了我一下午!

QLayout* layout = ui->widget_3->layout();//将widget_3中的全部按键添加到按键组
    if (layout)
    {
        for (int i = 0; i < layout->count(); ++i)
        {
            QLayoutItem* item = layout->itemAt(i);
            if (QAbstractButton* button = qobject_cast<QAbstractButton*>(item->widget()))
            {
                ButtonGroup_color->addButton(button);
            }
        }
    }

addButton()

信号和槽

QObject::connect(ButtonGroup_color,SIGNAL(buttonClicked(QAbstractButton*)),
this,SLOT(onButtonClicked(QAbstractButton*)));

checkedButton() 

函数可以用来获取当前被选中的按钮。如果没有按钮被选中,该函数将返回 nullptr

 Redio Button 单选按键

我把按键全部转型为 QRedioButton,就可以实现单选颜色框的问题

rgba隐藏勾选框问题

QLabel

QPaint

QT5 获取窗口、系统屏幕大小尺寸信息,Qt 获取控件位置坐标,屏幕坐标,相对父窗体坐标_qt 获取程序的坐标-CSDN博客

不知为何,page的坐标是(0,0),stackedWidget才有坐标

画图

void Widget::paintEvent(QPaintEvent *)
{
    QPainter p;
    p.begin(this);
    if(page==0)
    {
        QPen pen;
        pen.setWidth(5);
        pen.setColor(QColor(0,0,0));
        pen.setStyle(Qt::SolidLine);

        p.setPen(pen);
        int x =ui->stackedWidget->x();
        int y =ui->stackedWidget->y();
        int w =ui->stackedWidget->width();
        int h =ui->stackedWidget->height();

        p.drawRect(ui->stackedWidget->geometry());
        for(int i=0;i<=w;i=i+50)
        {
            p.drawLine(x+i,y,x+i,h);//(坐标x,坐标y,终点x,终点y)
            p.drawLine(x,y+i,x+w,y+i);
        }

    }
    else
    {
        p.eraseRect(geometry());

    }
    p.end();
}

 但是清空的时候没有达到预想效果,而且画的图有颗粒感

 

笑死了,我只是截个图他颗粒感就没了,然后换页等久一点黑线也清空了,但是为什么有延迟?

快捷键

QtCreator的界面预览: Shift + Alt + R
运行快捷键:Ctrl+R
只构建快捷键:Ctrl+B

  • 36
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值