ToB企服应用市场:ToB评测及商务社交产业平台

标题: Qt学习第二篇(基本小组件的使用) [打印本页]

作者: 没腿的鸟    时间: 2024-5-20 18:20
标题: Qt学习第二篇(基本小组件的使用)
Qt_2

小部件是 GUI 的基本元素。 它也称为UI 控件。 它接受来自底层平台的不同用户事件,如鼠标和键盘事件(以及其他事件)。 我们使用不同的小部件创建 UI。 曾经有一段时间,所有的 GUI 控件都是重新开始编写的。 Qt 小部件通过开发具有现成的 GUI 控件的桌面 GUI 来收缩时间,而且 Qt 广泛使用继承的概念。 所有小工具都继承自QObject。 QWidget是一个基本小部件,是所有 UI 小部件的基类。 它包罗形貌小部件所需的大多数属性,以及几何图形、颜色、鼠标、键盘行为、工具提示等属性。 让我们看看下图中的QWidget继承层次结构:

大多数 Qt 小部件名称都是不言而喻的,因为它们以q开头,所以很容易识别。 下面列出了此中的一些内容:
使用 Qt 小部件的优势之一是它的育儿系统。 从QObject继承的任何对象都具有父子关系。 这种关系给开发人员带来了很多便利,例如:
典型的 C++ 程序在 Main 返回时终止,但在 GUI 应用中我们不能这样做,否则应用将无法使用。 因此,我们需要 GUI 一直存在,直到用户关闭窗口。 要实现这一点,程序应该循环运行,直到发生这种环境。 GUI 应用等待用户输入事件。
  1. #include "mainwindow.h"
  2. #include <QApplication>
  3. #include <QLabel>
  4. int main(int argc, char *argv[])
  5. {
  6.     QApplication a(argc, argv);
  7.     QLabel myLabel;
  8.     myLabel.setText("I love regina");
  9.     //MainWindow w;
  10.     myLabel.show();
  11.     return a.exec();
  12. }
复制代码

接下来挨个实现一下前面的底子模块的使用方式:
QPushButton
  1. #include "mainwindow.h"
  2. #include <QApplication>
  3. #include <QLabel>
  4. #include <QPushButton>
  5. void mySlot() {
  6.     qDebug() << "regina kissed!";
  7.     /*qDebug() 是 Qt 框架中用于调试输出的函数,它用于将调试信息输出到控制台。在你的示例中,mySlot() 是一个槽函数,用于处理按钮点击事件。在槽函数中调用 qDebug() 是一种常见的做法,可以在控制台输出一些调试信息,以便于开发人员调试和排查问题。*/
  8. }
  9. int main(int argc, char *argv[])
  10. {
  11.     QApplication a(argc, argv);
  12.     QPushButton *mybutton = new QPushButton("click my sister regina");
  13.     // 将按钮的点击事件连接到槽函数
  14.     QObject::connect(mybutton,&QPushButton::clicked,&mySlot);
  15.     /*mybutton 是发出信号的对象,也就是 QPushButton 对象。
  16.     &QPushButton::clicked 是要连接的信号,表示当按钮被点击时发出的信号。
  17.     &mySlot 是槽函数的地址,表示当按钮被点击时要调用的函数。*/
  18.     mybutton->show();
  19.     return a.exec();
  20. }
复制代码

QCheckBox
  1. #include "mainwindow.h"
  2. #include <QApplication>
  3. #include <QLabel>
  4. #include <QPushButton>
  5. #include <QCheckBox>
  6. #include <QVBoxLayout>
  7. void mySlot() {
  8.     qDebug() << "regina kissed!";
  9. }
  10. int main(int argc, char *argv[])
  11. {
  12.     QApplication a(argc, argv);
  13.     /*QLabel myLabel;
  14.     myLabel.setText("I love regina");
  15.     //MainWindow w;
  16.     myLabel.show();*/
  17.     QPushButton *mybutton = new QPushButton("click my sister regina");
  18.     // 将按钮的点击事件连接到槽函数
  19.     QObject::connect(mybutton,&QPushButton::clicked,&mySlot);
  20.     /*mybutton 是发出信号的对象,也就是 QPushButton 对象。
  21.     &QPushButton::clicked 是要连接的信号,表示当按钮被点击时发出的信号。
  22.     &mySlot 是槽函数的地址,表示当按钮被点击时要调用的函数。*/
  23.     QWidget *widget = new QWidget;
  24.     QVBoxLayout *layout = new QVBoxLayout(widget); //创建垂直布局管理器
  25.     QCheckBox *checkBox = new QCheckBox("kiss regina", widget);
  26.     checkBox->setChecked(false);//默认为不选
  27.     layout->addWidget(checkBox);
  28.     layout->addWidget(mybutton);
  29.     widget->setLayout(layout);
  30.     widget->show();
  31.     //mybutton->show();
  32.     return a.exec();
  33. }
复制代码

QRadioButton
  1. QRadioButton *radioButton = new QRadioButton("Radio Button Text", widget);
  2. //获取和设置选中状态
  3. bool ischecked = radioButton->isChecked();
  4. radioButton->setChecked(true);
复制代码

QFrame

QFrame 类用于创建框架,可以在界面中用作容器或用于装饰其他小部件。setFrameShape() 和 setFrameShadow() 是 QFrame 类的两个方法,分别用于设置框架的形状和阴影效果。除了这两个方法之外,QFrame 类还有其他一些属性可以设置,例如:
  1. QFrame *frame = new QFrame(widget);
  2. frame->setFrameShape(QFrame::Panel);
  3. frame->setFrameShadow(QFrame::Raised);
  4. frame->setLayout(layout);
复制代码

QLabel
  1.     QLabel *label = new QLabel("label text",widget);
  2.     label->setText("regina label");
  3.     label->setPixmap(QPixmap("D:\\厦门Day2\\IMG_0958.JPG"));
  4.     layout->addWidget(label);
复制代码
QLineEdit

QLineEdit 是 Qt 框架中提供的一个用于输入和编辑单行文本的小部件(widget)。它允许用户在一个单行的文本框中输入、编辑和获取文本内容。
使用 QLineEdit,你可以创建一个单行编辑框,用户可以在此中输入文本。可以通过调用 setText() 方法来设置初始文本内容,并通过调用 text() 方法来获取当前文本内容。
  1. // 创建单行编辑框
  2. QLineEdit *lineEdit = new QLineEdit(widget);
  3. // 获取和设置文本内容
  4. QString text = lineEdit->text(); // 获取文本内容
  5. lineEdit->setText("regina linetext"); // 设置文本内容
  6. //layout->addWidget(frame);
  7. layout->addWidget(lineEdit);
复制代码

以下是 QLineEdit 的几个常用方法:
别的,你还可以通过信号和槽机制来处置惩罚文本的变化和编辑事件,以及使用样式表来自界说 QLineEdit 的外观。
以下是一个用例:
  1. #include <QApplication>
  2. #include <QLineEdit>
  3. #include <QDebug>
  4. #include <QVBoxLayout>
  5. int main(int argc, char *argv[]) {
  6.     QApplication app(argc, argv);
  7.     // 创建一个窗口
  8.     QWidget window;  //QWidget *widget = new QWidget;
  9.     window.setWindowTitle("qLINE"); //widget->setWindowTitle("qLINE");
  10.     // 创建一个单行编辑框
  11.     QLineEdit *lineEdit = new QLineEdit(&window);//这里必须是引用
  12.     //QLineEdit *lineEdit = new QLineEdit(widget);
  13.     lineEdit->setPlaceholderText("请输入内容");
  14.     // 设置只读模式
  15.     lineEdit->setReadOnly(false);// 设置为 true,则用户无法编辑文本
  16.     // 设置初始文本内容
  17.     lineEdit->setText("初始文本");
  18.     // 清除文本内容
  19.     // lineEdit->clear();
  20.     // 连接信号与槽函数,当文本发生变化时触发
  21.     QObject::connect(lineEdit,&QLineEdit::textChanged,[&](){
  22.         QString text = lineEdit->text();
  23.         qDebug() << "文本已改变:" << text;
  24.     });
  25.     // 将单行编辑框添加到窗口中
  26.         window.setLayout(new QVBoxLayout);
  27.     window.layout()->addWidget(lineEdit);
  28.     //QVBoxLayout layout;
  29.     //layout.addWidget(lineEdit);
  30.     //widget.setLayout(layout);
  31.     // 显示窗口
  32.     window.show();
  33.     // 运行应用程序
  34.     return app.exec();
  35. }
复制代码


基本的组件使用就讲到这里,剩下的遇到了再积累。之后先容深层次的自界说部件,信号槽函数使用的原理等内容。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4