每日学习总结20240308

每日总结

20240305

常用控件

  1. QPushButton(按钮):用于触发操作或响应用户点击事件。
  2. QLabel(标签):用于显示文本或图像。
  3. QLineEdit(行编辑器):单行文本输入框,用于接收用户输入的文本。
  4. QTextEdit(文本编辑器):多行文本输入框,用于接收用户输入的多行文本。
  5. QComboBox(组合框):下拉列表框,用于从预定义的选项中选择一个。
  6. QCheckBox(复选框):用于表示两种状态之一的复选框。
  7. QRadioButton(单选按钮):用于从多个互斥选项中选择一个的单选按钮。
  8. QSpinBox(数值调节框):用于增加或减少数值的微调框。
  9. QSlider(滑块):用于通过滑动来选择数值的滑块控件。
  10. QProgressBar(进度条):用于表示任务的完成进度。
  11. QGroupBox(分组框):用于将相关控件组合在一起并将其分组显示。
  12. QTabWidget(选项卡窗口):用于在多个页面之间进行切换的选项卡控件。
  13. QListWidget(列表框):用于显示项目列表,并允许用户选择其中一个或多个项目。
  14. QTreeWidget(树形列表框):用于以树形结构显示项目列表的控件。
  15. QMenuBar/QMenu/QAction(菜单栏/菜单/菜单项):用于创建应用程序的菜单和子菜单。

1.MainWindow

在Qt中,MainWindow通常是应用程序的主窗口,是用户与应用程序进行交互的主要界面。下面是MainWindow的十个常用用法:

  1. 创建MainWindow对象
MainWindow w;

创建一个MainWindow对象,通常在应用程序的入口处创建,作为应用程序的主窗口。

  1. 设置窗口标题
w.setWindowTitle("My Application");

设置MainWindow的标题,显示在窗口的标题栏上。

  1. 设置窗口尺寸
w.resize(800, 600);

设置MainWindow的初始尺寸,即窗口的宽度和高度。

  1. 显示窗口
w.show();

显示MainWindow窗口,使其可见。

  1. 设置中心部件
QWidget *centralWidget = new QWidget(&w);
w.setCentralWidget(centralWidget);

设置MainWindow的中心部件,中心部件是MainWindow中放置其他控件的区域。

  1. 添加菜单栏
QMenuBar *menuBar = w.menuBar();
QMenu *fileMenu = menuBar->addMenu("&File");

添加一个菜单栏,并在菜单栏上添加一个菜单。

  1. 添加工具栏
QToolBar *toolBar = w.addToolBar("File");

添加一个工具栏,可以在工具栏上放置各种工具按钮。

  1. 添加状态栏
QStatusBar *statusBar = w.statusBar();
statusBar->showMessage("Ready");

添加一个状态栏,用于显示应用程序的状态信息。

  1. 连接信号与槽
QObject::connect(actionOpen, &QAction::triggered, this, &MainWindow::openFile);

连接菜单项或工具栏按钮的信号与槽,实现用户操作与应用程序逻辑的关联。

  1. 关闭窗口
w.close();

关闭MainWindow窗口,隐藏并释放MainWindow对象的资源。

这些是MainWindow对象的一些常用用法,可以根据具体需求进行调整和扩展。

2.QPushbutton

QPushButton 是 Qt 中常用的按钮控件,用于触发用户交互操作。以下是 QPushButton 的十个常用用法:

  1. 创建按钮
QPushButton *button = new QPushButton("Click me");

创建一个按钮对象,并设置按钮上显示的文本为 “Click me”。

  1. 设置按钮文本
button->setText("Press here");

修改按钮上显示的文本为 “Press here”。

  1. 设置按钮图标
button->setIcon(QIcon("icon.png"));

设置按钮上显示的图标,可以是一个 QIcon 对象或者图片文件路径。

  1. 设置按钮尺寸
button->setFixedSize(100, 50);

设置按钮的固定尺寸为 100x50 像素,这样按钮的大小将不受内容的影响而固定。

  1. 设置按钮样式
button->setStyleSheet("background-color: blue; color: white;");

通过样式表设置按钮的外观,可以设置背景色、文本颜色、边框样式等。

  1. 设置按钮状态
button->setEnabled(false);

禁用按钮,使其不响应用户的点击操作。

  1. 连接按钮的点击信号
connect(button, &QPushButton::clicked, this, &MainWindow::buttonClicked);

连接按钮的 clicked 信号与槽函数,当用户点击按钮时,执行槽函数中的逻辑。

  1. 设置按钮工具提示
button->setToolTip("This is a button");

设置按钮的工具提示,当鼠标悬停在按钮上时显示的文本。

  1. 设置按钮默认状态
button->setDefault(true);

设置按钮为默认按钮,当用户按下 Enter 键时,将模拟点击此按钮。

  1. 设置按钮焦点策略
button->setFocusPolicy(Qt::StrongFocus);

设置按钮的焦点策略,确定按钮在使用 Tab 键切换焦点时的行为。

这些是 QPushButton 的常用用法,可以根据具体需求对按钮进行更多的定制和扩展。

3. layout

布局(Layout)在Qt中用于管理窗口中的控件的位置和大小,使得窗口能够在不同尺寸的设备上自适应地进行布局。下面是布局(Layout)最常用的十个用法:

  1. 创建布局对象
QVBoxLayout *layout = new QVBoxLayout;

创建一个垂直布局(QVBoxLayout)对象,也可以创建水平布局(QHBoxLayout)或网格布局(QGridLayout)对象。

  1. 将控件添加到布局中
layout->addWidget(widget);

将一个控件(如QPushButton、QLabel等)添加到布局中。

  1. 设置布局的间距
layout->setSpacing(10);

设置布局中控件之间的间距。

  1. 设置布局的边距
layout->setContentsMargins(10, 10, 10, 10);

设置布局与窗口边缘的边距。

  1. 设置布局对齐方式
layout->setAlignment(Qt::AlignCenter);

设置布局中控件的对齐方式,如居中对齐、左对齐、右对齐等。

  1. 将布局设置为窗口的布局管理器
QWidget *window = new QWidget;
window->setLayout(layout);

将布局设置为窗口的布局管理器,使得布局能够管理窗口中的控件。

  1. 设置控件的大小策略
widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);

设置控件在布局中的大小策略,如固定大小、自动大小、按比例扩展等。

  1. 清空布局中的控件
layout->removeWidget(widget);
delete widget;

从布局中移除控件并释放内存。

  1. 插入一个空白控件
layout->addSpacerItem(new QSpacerItem(10, 10));

在布局中插入一个空白控件,用于调整布局中控件的位置。

  1. 动态调整布局
layout->invalidate();

在布局中控件发生变化时,调用该方法使布局重新计算控件的位置和大小。

这些是布局最常用的十个用法,通过合理使用布局,可以方便地实现窗口中控件的排列和布局管理。

4. label

Label(标签)是Qt中用于显示文本或图像的控件,下面是Label最常用的十个用法:

  1. 创建Label对象
QLabel *label = new QLabel("Hello, World!");

创建一个Label对象,并设置其显示的文本内容为"Hello, World!"。

  1. 设置文本
label->setText("New Text");

设置Label显示的文本内容为"New Text"。

  1. 设置字体
label->setFont(QFont("Arial", 12));

设置Label显示文本的字体和字号。

  1. 设置文本对齐方式
label->setAlignment(Qt::AlignCenter);

设置Label显示文本的对齐方式,如居中对齐、左对齐、右对齐等。

  1. 设置文本颜色
label->setStyleSheet("color: red");

设置Label显示文本的颜色,可以使用CSS样式。

  1. 设置文本是否自动换行
label->setWordWrap(true);

设置Label显示的文本是否自动换行。

  1. 设置图片
label->setPixmap(QPixmap("image.png"));

设置Label显示的图片,可以是文件路径或者QPixmap对象。

  1. 设置图片缩放
label->setScaledContents(true);

设置Label显示的图片是否自动缩放以适应Label的大小。

  1. 设置鼠标提示
label->setToolTip("This is a label");

设置Label的鼠标提示,鼠标悬停在Label上时显示的文本。

  1. 设置文本是否可选中
label->setTextInteractionFlags(Qt::TextSelectableByMouse);

设置Label中的文本是否可以被鼠标选中。

这些是Label最常用的十个用法,通过合理使用Label控件,可以方便地在Qt应用程序中显示文本和图像。

5. QLineEdit

QLineEdit 是 Qt 中用于输入单行文本的小部件,它提供了很多方便的功能来处理用户输入。以下是十种常用的 QLineEdit 用法:

  1. 文本输入: 最基本的用法是允许用户输入文本。你可以直接在 QLineEdit 对象上调用 setText() 方法设置初始文本,或者使用 text() 方法获取用户输入的文本。

    // 设置初始文本
    QLineEdit *lineEdit = new QLineEdit(this);
    lineEdit->setText("初始文本");
    
    // 获取用户输入的文本
    QString text = lineEdit->text();
    
  2. 密码输入: 使用 setEchoMode() 方法将 QLineEdit 设置为密码模式,这样用户输入的文本将被隐藏。

    QLineEdit *passwordEdit = new QLineEdit(this);
    passwordEdit->setEchoMode(QLineEdit::Password);
    
  3. 只读模式: 通过设置 QLineEdit 的只读属性,可以禁止用户编辑文本,但仍然可以复制和选择文本。

    QLineEdit *readOnlyEdit = new QLineEdit(this);
    readOnlyEdit->setReadOnly(true);
    
  4. 校验器: 使用校验器来限制用户输入的内容。例如,你可以使用 setValidator() 方法设置一个正则表达式校验器,只允许用户输入数字。

    QIntValidator *validator = new QIntValidator(0, 100, this);
    QLineEdit *numericEdit = new QLineEdit(this);
    numericEdit->setValidator(validator);
    
  5. 提示文本: 设置一个提示文本,当用户未输入任何内容时,提示文本会显示在 QLineEdit 中。

    QLineEdit *hintEdit = new QLineEdit(this);
    hintEdit->setPlaceholderText("请输入文本");
    
  6. 事件处理: 通过重写 QLineEdit 的事件处理函数,你可以处理键盘事件、鼠标事件等。

    void MyLineEdit::keyPressEvent(QKeyEvent *event) {
        if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) {
            // 处理回车事件
        } else {
            QLineEdit::keyPressEvent(event);
        }
    }
    
  7. 信号和槽连接: 使用信号和槽机制,可以在用户输入文本时触发相应的操作。

    connect(lineEdit, &QLineEdit::textChanged, [=](const QString &text) {
        // 处理文本变化
    });
    
  8. 自动补全: 使用自动补全功能,当用户输入时,根据已有的选项进行提示。

    QStringList options = {"Option1", "Option2", "Option3"};
    QCompleter *completer = new QCompleter(options, this);
    QLineEdit *autoCompleteEdit = new QLineEdit(this);
    autoCompleteEdit->setCompleter(completer);
    
  9. 拖放操作: 通过设置拖放属性,可以实现从其他应用程序或者内部的拖放文本到 QLineEdit。

    QLineEdit *dragDropEdit = new QLineEdit(this);
    dragDropEdit->setAcceptDrops(true);
    
  10. 文本选择: 使用 selectAll() 方法可以选择整个文本,使用 setSelection() 方法可以选择部分文本。

    lineEdit->selectAll(); // 选择整个文本
    lineEdit->setSelection(startPos, endPos); // 选择部分文本
    

这些是 QLineEdit 的一些常见用法,你可以根据自己的需求选择适合的方法。

6. QComboBox

QComboBox 是 Qt 中常用的组合框控件,它允许用户从预定义的选项中选择一个值。以下是 QComboBox 的十种常用用法:

  1. 添加和移除选项:使用 addItem() 方法可以向组合框添加选项,使用 removeItem() 方法可以移除选项。
QComboBox *comboBox = new QComboBox(parent);
comboBox->addItem("Option 1");
comboBox->addItem("Option 2");
comboBox->removeItem(1); // Removes "Option 2"
  1. 清空所有选项:使用 clear() 方法可以清空组合框中的所有选项。
comboBox->clear();
  1. 设置默认选中项:使用 setCurrentIndex() 方法可以设置组合框的默认选中项。
comboBox->setCurrentIndex(0); // Sets the first item as default
  1. 获取当前选中项的文本和索引:使用 currentText() 方法可以获取当前选中项的文本,使用 currentIndex() 方法可以获取当前选中项的索引。
QString selectedText = comboBox->currentText();
int selectedIndex = comboBox->currentIndex();
  1. 根据索引设置选中项:使用 setCurrentIndex() 方法可以根据索引设置选中项。
comboBox->setCurrentIndex(1); // Sets the second item as selected
  1. 根据文本设置选中项:使用 setCurrentText() 方法可以根据文本设置选中项。
comboBox->setCurrentText("Option 2"); // Sets "Option 2" as selected
  1. 监听选项的选择变化:使用 currentIndexChanged 信号可以监听选项的选择变化。
connect(comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onComboBoxIndexChanged(int)));
  1. 自定义选项显示:使用 setItemText() 方法可以自定义选项的显示文本。
comboBox->addItem("Option 1", QVariant(1));
comboBox->setItemText(0, "Custom Option 1");
  1. 自定义下拉列表显示:使用 setView() 方法可以自定义下拉列表的显示方式,比如设置成树状结构或者表格结构。
QTreeView *treeView = new QTreeView();
comboBox->setView(treeView);
  1. 启用和禁用组合框:使用 setEnabled() 方法可以启用或禁用组合框。
comboBox->setEnabled(false); // Disables the combo box

这些是 QComboBox 的一些常见用法,根据实际需求,你可以灵活运用这些方法来实现各种功能。

7. QCheckBox

QCheckBox 是 Qt 中常用的复选框控件,它允许用户在多个选项中选择一个或多个。以下是 QCheckBox 的十种常用用法:

  1. 创建并添加到布局:使用 new 关键字创建 QCheckBox 对象,并将其添加到布局中。
QCheckBox *checkBox = new QCheckBox("Option 1", parent);
layout->addWidget(checkBox);
  1. 设置默认选中状态:使用 setChecked() 方法可以设置复选框的默认选中状态。
checkBox->setChecked(true); // Sets the checkbox checked by default
  1. 获取当前选中状态:使用 isChecked() 方法可以获取复选框的当前选中状态。
bool isChecked = checkBox->isChecked();
  1. 设置文本:使用 setText() 方法可以设置复选框的文本。
checkBox->setText("Option 1");
  1. 监听选中状态变化:使用 stateChanged 信号可以监听复选框的选中状态变化。
connect(checkBox, SIGNAL(stateChanged(int)), this, SLOT(onCheckBoxStateChanged(int)));
  1. 自定义样式:使用 setStyleSheet() 方法可以自定义复选框的样式。
checkBox->setStyleSheet("QCheckBox { color: red; }");
  1. 设置三态复选框:使用 setTristate() 方法可以设置复选框为三态模式,允许选中、未选中和半选中三种状态。
checkBox->setTristate(true);
  1. 获取三态复选框的状态:使用 checkState() 方法可以获取三态复选框的当前状态。
Qt::CheckState state = checkBox->checkState();
  1. 启用和禁用复选框:使用 setEnabled() 方法可以启用或禁用复选框。
checkBox->setEnabled(false); // Disables the checkbox
  1. 关联多个复选框:使用 setCheckable() 方法可以将多个复选框关联在一起,使它们只能选择其中一个。
checkBox->setCheckable(true);

这些是 QCheckBox 的一些常见用法,根据实际需求,你可以灵活运用这些方法来实现各种功能。

8. QRadioButton

QRadioButton 是 Qt 中常用的单选按钮控件,它允许用户在多个选项中选择一个。以下是 QRadioButton 的十种常用用法:

  1. 创建并添加到布局:使用 new 关键字创建 QRadioButton 对象,并将其添加到布局中。
QRadioButton *radioButton1 = new QRadioButton("Option 1", parent);
QRadioButton *radioButton2 = new QRadioButton("Option 2", parent);
layout->addWidget(radioButton1);
layout->addWidget(radioButton2);
  1. 设置默认选中状态:使用 setChecked() 方法可以设置单选按钮的默认选中状态。
radioButton1->setChecked(true); // Sets the radio button checked by default
  1. 获取当前选中状态:使用 isChecked() 方法可以获取单选按钮的当前选中状态。
bool isChecked = radioButton1->isChecked();
  1. 设置文本:使用 setText() 方法可以设置单选按钮的文本。
radioButton1->setText("Option 1");
  1. 监听选中状态变化:使用 toggled 信号可以监听单选按钮的选中状态变化。
connect(radioButton1, SIGNAL(toggled(bool)), this, SLOT(onRadioButtonToggled(bool)));
  1. 设置自动互斥:使用 setAutoExclusive() 方法可以设置单选按钮为自动互斥模式,确保在同一个组中只能选中一个按钮。
radioButton1->setAutoExclusive(true);
radioButton2->setAutoExclusive(true);
  1. 设置图标:使用 setIcon() 方法可以设置单选按钮的图标。
radioButton1->setIcon(QIcon(":/icons/icon.png"));
  1. 设置样式表:使用 setStyleSheet() 方法可以设置单选按钮的样式。
radioButton1->setStyleSheet("QRadioButton { color: red; }");
  1. 设置三态按钮:使用 setTristate() 方法可以设置单选按钮为三态模式,允许选中、未选中和半选中三种状态。
radioButton1->setTristate(true);
  1. 获取三态按钮的状态:使用 checkState() 方法可以获取三态按钮的当前状态。
Qt::CheckState state = radioButton1->checkState();

这些是 QRadioButton 的一些常见用法,根据实际需求,你可以灵活运用这些方法来实现各种功能。

9. QSpinBox

QSpinBox 是 Qt 中常用的数字输入框控件,它允许用户在预定义的范围内选择一个整数值。以下是 QSpinBox 的十种常用用法:

  1. 创建并添加到布局:使用 new 关键字创建 QSpinBox 对象,并将其添加到布局中。
QSpinBox *spinBox = new QSpinBox(parent);
layout->addWidget(spinBox);
  1. 设置范围:使用 setRange() 方法可以设置 QSpinBox 的取值范围。
spinBox->setRange(0, 100); // Sets the range from 0 to 100
  1. 设置默认值:使用 setValue() 方法可以设置 QSpinBox 的默认值。
spinBox->setValue(50); // Sets the default value to 50
  1. 获取当前值:使用 value() 方法可以获取 QSpinBox 的当前值。
int value = spinBox->value();
  1. 监听值变化:使用 valueChanged 信号可以监听 QSpinBox 的值变化。
connect(spinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged(int)));
  1. 设置步长:使用 setSingleStep() 方法可以设置 QSpinBox 的步长。
spinBox->setSingleStep(5); // Sets the step size to 5
  1. 设置特定值:使用 setValue() 方法可以设置 QSpinBox 的当前值为特定值。
spinBox->setValue(10); // Sets the value to 10
  1. 设置特定文本:使用 setSuffix() 方法可以设置 QSpinBox 显示的文本后缀。
spinBox->setSuffix(" km/h"); // Sets the suffix to " km/h"
  1. 设置特定样式:使用 setStyleSheet() 方法可以设置 QSpinBox 的样式。
spinBox->setStyleSheet("QSpinBox { background-color: yellow; }");
  1. 启用和禁用:使用 setEnabled() 方法可以启用或禁用 QSpinBox。
spinBox->setEnabled(false); // Disables the spin box

这些是 QSpinBox 的一些常见用法,根据实际需求,你可以灵活运用这些方法来实现各种功能。

10.QSlider

QSlider 是 Qt 中常用的滑动条控件,它允许用户在预定义的范围内选择一个值。以下是 QSlider 的十种常用用法:

  1. 创建并添加到布局:使用 new 关键字创建 QSlider 对象,并将其添加到布局中。
QSlider *slider = new QSlider(Qt::Horizontal, parent); // 水平滑动条
layout->addWidget(slider);
QSlider *slider = new QSlider(Qt::Vertical, parent); // 垂直滑动条
layout->addWidget(slider);
  1. 设置范围:使用 setRange() 方法可以设置 QSlider 的取值范围。
slider->setRange(0, 100); // 设置范围为 0 到 100
  1. 设置默认值:使用 setValue() 方法可以设置 QSlider 的默认值。
slider->setValue(50); // 设置默认值为 50
  1. 获取当前值:使用 value() 方法可以获取 QSlider 的当前值。
int value = slider->value();
  1. 监听值变化:使用 valueChanged 信号可以监听 QSlider 的值变化。
connect(slider, SIGNAL(valueChanged(int)), this, SLOT(onSliderValueChanged(int)));
  1. 设置步长:使用 setSingleStep() 方法可以设置 QSlider 的步长。
slider->setSingleStep(5); // 设置步长为 5
  1. 设置滑块位置:使用 setSliderPosition() 方法可以设置滑块的当前位置。
slider->setSliderPosition(30); // 设置滑块位置为 30
  1. 设置特定样式:使用 setStyleSheet() 方法可以设置 QSlider 的样式。
slider->setStyleSheet("QSlider::handle { background-color: red; }");
  1. 设置刻度显示:使用 setTickPosition() 方法可以设置刻度的位置。
slider->setTickPosition(QSlider::TicksBelow); // 设置刻度在下方显示
  1. 启用和禁用:使用 setEnabled() 方法可以启用或禁用 QSlider。
slider->setEnabled(false); // 禁用滑动条

这些是 QSlider 的一些常见用法,根据实际需求,你可以灵活运用这些方法来实现各种功能。

11.QProgressBar

QProgressBar 是 Qt 中常用的进度条控件,用于显示任务的完成进度。以下是 QProgressBar 的十种常用用法:

  1. 创建并添加到布局:使用 new 关键字创建 QProgressBar 对象,并将其添加到布局中。
QProgressBar *progressBar = new QProgressBar(parent);
layout->addWidget(progressBar);
  1. 设置范围:使用 setRange() 方法可以设置 QProgressBar 的取值范围。
progressBar->setRange(0, 100); // 设置范围为 0 到 100
  1. 设置当前值:使用 setValue() 方法可以设置 QProgressBar 的当前值。
progressBar->setValue(50); // 设置当前值为 50
  1. 获取当前值:使用 value() 方法可以获取 QProgressBar 的当前值。
int value = progressBar->value();
  1. 设置显示文本:使用 setFormat() 方法可以设置 QProgressBar 显示的文本格式。
progressBar->setFormat("Progress: %p%"); // 设置显示格式为百分比
  1. 设置特定样式:使用 setStyleSheet() 方法可以设置 QProgressBar 的样式。
progressBar->setStyleSheet("QProgressBar { background-color: yellow; }");
  1. 监听值变化:通常情况下,QProgressBar 不需要监听值变化,因为它是由程序控制的。

  2. 显示/隐藏:使用 setVisible() 方法可以显示或隐藏 QProgressBar。

progressBar->setVisible(true); // 显示进度条
  1. 启用和禁用:使用 setEnabled() 方法可以启用或禁用 QProgressBar。
progressBar->setEnabled(false); // 禁用进度条
  1. 设置方向:使用 setOrientation() 方法可以设置 QProgressBar 的方向。
progressBar->setOrientation(Qt::Vertical); // 设置进度条为垂直方向

这些是 QProgressBar 的一些常见用法,根据实际需求,你可以灵活运用这些方法来实现各种功能。

12. QGroupBox

QGroupBox 是 Qt 中常用的分组框控件,用于将一组相关的控件放在一个框中,以便于组织和管理。以下是 QGroupBox 的十种常用用法:

  1. 创建并添加到布局:使用 new 关键字创建 QGroupBox 对象,并将其添加到布局中。
QGroupBox *groupBox = new QGroupBox("Options", parent);
layout->addWidget(groupBox);
  1. 设置标题:使用构造函数或 setTitle() 方法可以设置 QGroupBox 的标题。
QGroupBox *groupBox = new QGroupBox("Options", parent);

或者:

groupBox->setTitle("Options");
  1. 添加控件:使用布局管理器向 QGroupBox 中添加控件。
QVBoxLayout *groupBoxLayout = new QVBoxLayout;
groupBoxLayout->addWidget(new QPushButton("Button 1"));
groupBoxLayout->addWidget(new QPushButton("Button 2"));
groupBox->setLayout(groupBoxLayout);
  1. 设置样式:使用 setStyleSheet() 方法可以设置 QGroupBox 的样式。
groupBox->setStyleSheet("QGroupBox { background-color: yellow; }");
  1. 设置边框:使用 setFlat() 方法可以设置 QGroupBox 的边框是否显示。
groupBox->setFlat(true); // 隐藏边框
  1. 启用和禁用:使用 setEnabled() 方法可以启用或禁用 QGroupBox。
groupBox->setEnabled(false); // 禁用 QGroupBox
  1. 设置对齐方式:使用 setAlignment() 方法可以设置 QGroupBox 中的控件的对齐方式。
groupBox->setAlignment(Qt::AlignCenter); // 设置控件居中对齐
  1. 设置标题对齐方式:使用 setTitleAlignment() 方法可以设置 QGroupBox 标题的对齐方式。
groupBox->setTitleAlignment(Qt::AlignCenter); // 设置标题居中对齐
  1. 设置平铺布局:使用 setFlatLayout() 方法可以设置 QGroupBox 中的控件以平铺方式布局。
groupBox->setFlatLayout(true); // 设置控件以平铺方式布局
  1. 监听状态变化:通常情况下,QGroupBox 不需要监听状态变化,因为它通常是由用户交互而改变的。

这些是 QGroupBox 的一些常见用法,根据实际需求,你可以灵活运用这些方法来实现各种功能。

13. QTabWidget

QTabWidget 是 Qt 中常用的选项卡控件,用于在同一窗口中显示多个选项卡页面。以下是 QTabWidget 的十种常用用法:

  1. 创建并添加到布局:使用 new 关键字创建 QTabWidget 对象,并将其添加到布局中。
QTabWidget *tabWidget = new QTabWidget(parent);
layout->addWidget(tabWidget);
  1. 添加选项卡页:使用 addTab() 方法可以添加选项卡页面,并设置标题和页面内容。
QWidget *page1 = new QWidget;
tabWidget->addTab(page1, "Page 1");

QWidget *page2 = new QWidget;
tabWidget->addTab(page2, "Page 2");
  1. 移除选项卡页:使用 removeTab() 方法可以移除选项卡页面。
tabWidget->removeTab(index); // 移除指定索引的选项卡页
  1. 设置当前页:使用 setCurrentIndex() 方法可以设置当前显示的选项卡页面。
tabWidget->setCurrentIndex(index); // 设置当前显示的选项卡页为指定索引
  1. 获取当前页索引:使用 currentIndex() 方法可以获取当前显示的选项卡页面的索引。
int currentIndex = tabWidget->currentIndex();
  1. 设置选项卡位置:使用 setTabPosition() 方法可以设置选项卡的位置。
tabWidget->setTabPosition(QTabWidget::North); // 设置选项卡在顶部显示
  1. 设置样式:使用 setStyleSheet() 方法可以设置 QTabWidget 的样式。
tabWidget->setStyleSheet("QTabWidget::tab { background-color: yellow; }");
  1. 监听选项卡变化:使用 currentChanged 信号可以监听选项卡的变化。
connect(tabWidget, SIGNAL(currentChanged(int)), this, SLOT(onTabChanged(int)));
  1. 启用和禁用:使用 setEnabled() 方法可以启用或禁用 QTabWidget。
tabWidget->setEnabled(false); // 禁用选项卡控件
  1. 设置自定义图标:使用 setTabIcon() 方法可以为选项卡设置自定义图标。
tabWidget->setTabIcon(index, icon); // 为指定索引的选项卡设置图标

这些是 QTabWidget 的一些常见用法,根据实际需求,你可以灵活运用这些方法来实现各种功能。

14. QListWidget

QListWidget 是 Qt 中常用的列表控件,用于显示一个可滚动的项目列表。以下是 QListWidget 的十种常用用法:

  1. 创建并添加到布局:使用 new 关键字创建 QListWidget 对象,并将其添加到布局中。
QListWidget *listWidget = new QListWidget(parent);
layout->addWidget(listWidget);
  1. 添加列表项:使用 addItem() 方法可以向 QListWidget 中添加列表项。
listWidget->addItem("Item 1");
listWidget->addItem("Item 2");
  1. 设置单选模式:使用 setSelectionMode() 方法可以设置列表的选择模式为单选。
listWidget->setSelectionMode(QAbstractItemView::SingleSelection);
  1. 设置多选模式:使用 setSelectionMode() 方法可以设置列表的选择模式为多选。
listWidget->setSelectionMode(QAbstractItemView::MultiSelection);
  1. 获取选中项:使用 selectedItems() 方法可以获取当前选中的项。
QList<QListWidgetItem*> selectedItems = listWidget->selectedItems();
  1. 清空所有项:使用 clear() 方法可以清空列表中的所有项。
listWidget->clear();
  1. 设置自定义项:使用 setItemWidget() 方法可以为列表中的项设置自定义控件。
QWidget *customWidget = new QWidget;
QPushButton *button = new QPushButton("Click Me", customWidget);
listWidget->setItemWidget(item, customWidget);
  1. 获取当前项:使用 currentItem() 方法可以获取当前选中的项。
QListWidgetItem *currentItem = listWidget->currentItem();
  1. 启用和禁用:使用 setEnabled() 方法可以启用或禁用 QListWidget。
listWidget->setEnabled(false); // 禁用列表控件
  1. 监听项选择变化:使用 itemSelectionChanged 信号可以监听列表项的选择变化。
connect(listWidget, SIGNAL(itemSelectionChanged()), this, SLOT(onItemSelectionChanged()));

这些是 QListWidget 的一些常见用法,根据实际需求,你可以灵活运用这些方法来实现各种功能。

15.QTreeWidget

QTreeWidget 是 Qt 中常用的树形控件,用于显示树形结构的数据。以下是 QTreeWidget 的十种常用用法,并提供一个综合示例:

  1. 创建并添加到布局:使用 new 关键字创建 QTreeWidget 对象,并将其添加到布局中。
QTreeWidget *treeWidget = new QTreeWidget(parent);
layout->addWidget(treeWidget);
  1. 设置列数:使用 setColumnCount() 方法可以设置树控件的列数。
treeWidget->setColumnCount(3); // 设置树控件有3列
  1. 添加树节点:使用 addTopLevelItem() 方法可以添加顶层树节点。
QTreeWidgetItem *topItem = new QTreeWidgetItem(treeWidget);
topItem->setText(0, "Top Level Item");
  1. 添加子节点:使用 addChild() 方法可以添加子节点。
QTreeWidgetItem *childItem = new QTreeWidgetItem(topItem);
childItem->setText(0, "Child Item");
  1. 设置节点文本:使用 setText() 方法可以设置节点的文本。
topItem->setText(1, "Data 1");
childItem->setText(1, "Data 2");
  1. 设置节点图标:使用 setIcon() 方法可以设置节点的图标。
topItem->setIcon(0, QIcon(":/icons/folder.png"));
childItem->setIcon(0, QIcon(":/icons/file.png"));
  1. 展开和折叠节点:使用 expandItem()collapseItem() 方法可以展开和折叠节点。
treeWidget->expandItem(topItem); // 展开节点
treeWidget->collapseItem(topItem); // 折叠节点
  1. 获取当前选中的节点:使用 currentItem() 方法可以获取当前选中的节点。
QTreeWidgetItem *currentItem = treeWidget->currentItem();
  1. 启用和禁用:使用 setEnabled() 方法可以启用或禁用 QTreeWidget。
treeWidget->setEnabled(false); // 禁用树控件
  1. 监听节点选择变化:使用 itemSelectionChanged 信号可以监听节点的选择变化。
connect(treeWidget, SIGNAL(itemSelectionChanged()), this, SLOT(onItemSelectionChanged()));

综合示例:

#include <QtWidgets>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    // Create a tree widget
    QTreeWidget treeWidget;
    treeWidget.setColumnCount(2);

    // Add top level items
    QTreeWidgetItem *topItem1 = new QTreeWidgetItem(&treeWidget);
    topItem1->setText(0, "Top Level Item 1");
    topItem1->setText(1, "Data 1");

    QTreeWidgetItem *topItem2 = new QTreeWidgetItem(&treeWidget);
    topItem2->setText(0, "Top Level Item 2");
    topItem2->setText(1, "Data 2");

    // Add child items
    QTreeWidgetItem *childItem1 = new QTreeWidgetItem(topItem1);
    childItem1->setText(0, "Child Item 1");
    childItem1->setText(1, "Data 3");

    QTreeWidgetItem *childItem2 = new QTreeWidgetItem(topItem2);
    childItem2->setText(0, "Child Item 2");
    childItem2->setText(1, "Data 4");

    // Show the tree widget
    treeWidget.show();

    return app.exec();
}

这些是 QTreeWidget 的一些常见用法和一个综合示例。根据实际需求,你可以灵活运用这些方法来实现各种功能。

16.QMenuBar

QMenuBar 是 Qt 中用于创建菜单栏的控件,用于组织和管理程序的菜单。以下是 QMenuBar 的十种常用用法,并提供一个综合示例程序:

  1. 创建并添加到窗口:使用 new 关键字创建 QMenuBar 对象,并将其设置为窗口的菜单栏。
QMenuBar *menuBar = new QMenuBar(parent);
window->setMenuBar(menuBar);
  1. 添加菜单:使用 addMenu() 方法可以添加菜单到菜单栏。
QMenu *fileMenu = menuBar->addMenu("File");
  1. 添加菜单项:使用 addAction() 方法可以向菜单中添加菜单项。
fileMenu->addAction("Open");
fileMenu->addAction("Save");
  1. 添加子菜单:使用 addMenu() 方法可以向菜单中添加子菜单。
QMenu *editMenu = menuBar->addMenu("Edit");
QMenu *copySubMenu = editMenu->addMenu("Copy");
copySubMenu->addAction("Copy Text");
copySubMenu->addAction("Copy Image");
  1. 设置快捷键:使用 setShortcut() 方法可以为菜单项设置快捷键。
fileMenu->addAction("Open")->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_O));
  1. 添加分隔符:使用 addSeparator() 方法可以在菜单中添加分隔符。
fileMenu->addSeparator();
  1. 监听菜单项点击事件:使用 triggered 信号可以监听菜单项的点击事件。
connect(fileMenu, SIGNAL(triggered(QAction*)), this, SLOT(onFileMenuActionTriggered(QAction*)));
  1. 设置菜单项状态:使用 setEnabled() 方法可以设置菜单项的状态(启用/禁用)。
fileMenu->actions().at(0)->setEnabled(false); // 禁用第一个菜单项
  1. 添加工具栏:使用 addToolBar() 方法可以添加工具栏到菜单栏。
QToolBar *toolBar = new QToolBar("Toolbar", parent);
menuBar->addToolBar(toolBar);
  1. 设置样式:使用 setStyleSheet() 方法可以设置菜单栏的样式。
menuBar->setStyleSheet("background-color: lightgray;");

综合示例程序:

#include <QtWidgets>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    // Create main window
    QMainWindow window;

    // Create menu bar
    QMenuBar *menuBar = new QMenuBar(&window);
    window.setMenuBar(menuBar);

    // Create file menu
    QMenu *fileMenu = menuBar->addMenu("File");
    fileMenu->addAction("Open");
    fileMenu->addAction("Save");

    // Create edit menu
    QMenu *editMenu = menuBar->addMenu("Edit");
    editMenu->addAction("Cut");
    editMenu->addAction("Copy");
    editMenu->addAction("Paste");

    // Create toolbar
    QToolBar *toolBar = new QToolBar("Toolbar", &window);
    menuBar->addToolBar(toolBar);

    // Show main window
    window.resize(400, 300);
    window.show();

    return app.exec();
}

这些是 QMenuBar 的一些常见用法和一个综合示例程序。根据实际需求,你可以灵活运用这些方法来实现各种功能。

17.QMenu

QMenu 是 Qt 中常用的菜单控件,用于在应用程序中创建菜单。以下是 QMenu 的十种常用用法,并提供一个综合示例程序:

  1. 创建并添加到菜单栏:使用 new 关键字创建 QMenu 对象,并将其添加到菜单栏中。
QMenu *menu = new QMenu("File", menuBar);
menuBar->addMenu(menu);
  1. 添加菜单项:使用 addAction() 方法可以向菜单中添加菜单项。
menu->addAction("New");
menu->addAction("Open");
  1. 设置快捷键:使用 setShortcut() 方法可以为菜单项设置快捷键。
menu->addAction("Save")->setShortcut(QKeySequence::Save);
menu->addAction("Exit")->setShortcut(QKeySequence::Quit);
  1. 添加分隔符:使用 addSeparator() 方法可以在菜单中添加分隔符。
menu->addSeparator();
  1. 添加子菜单:使用 addMenu() 方法可以向菜单中添加子菜单。
QMenu *subMenu = new QMenu("Options", menu);
menu->addMenu(subMenu);
  1. 设置菜单项图标:使用 setIcon() 方法可以为菜单项设置图标。
menu->addAction("Cut")->setIcon(QIcon(":/icons/cut.png"));
  1. 菜单项的禁用和启用:使用 setEnabled() 方法可以禁用或启用菜单项。
menu->addAction("Paste")->setEnabled(false);
  1. 监听菜单项触发:使用 triggered 信号可以监听菜单项的触发。
connect(menu, SIGNAL(triggered(QAction*)), this, SLOT(onMenuActionTriggered(QAction*)));
  1. 设置菜单的样式:使用 setStyleSheet() 方法可以设置菜单的样式。
menu->setStyleSheet("QMenu { background-color: yellow; }");
  1. 设置菜单的上下文菜单:使用 setContextMenuPolicy() 方法可以设置菜单的上下文菜单策略。
widget->setContextMenuPolicy(Qt::CustomContextMenu);
connect(widget, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(onCustomContextMenu(const QPoint&)));

综合示例:

#include <QtWidgets>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    // Create main window
    QMainWindow mainWindow;
    QWidget *centralWidget = new QWidget;
    mainWindow.setCentralWidget(centralWidget);

    // Create menu bar
    QMenuBar *menuBar = mainWindow.menuBar();

    // File menu
    QMenu *fileMenu = new QMenu("File", menuBar);
    menuBar->addMenu(fileMenu);

    fileMenu->addAction("New");
    fileMenu->addAction("Open");
    fileMenu->addAction("Save")->setShortcut(QKeySequence::Save);
    fileMenu->addSeparator();
    fileMenu->addAction("Exit")->setShortcut(QKeySequence::Quit);

    // Edit menu
    QMenu *editMenu = new QMenu("Edit", menuBar);
    menuBar->addMenu(editMenu);

    editMenu->addAction("Cut")->setIcon(QIcon(":/icons/cut.png"));
    editMenu->addAction("Copy")->setIcon(QIcon(":/icons/copy.png"));
    editMenu->addAction("Paste")->setEnabled(false);

    // Context menu
    centralWidget->setContextMenuPolicy(Qt::CustomContextMenu);
    connect(centralWidget, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(onCustomContextMenu(const QPoint&)));

    // Show the main window
    mainWindow.show();

    return app.exec();
}

这些是 QMenu 的一些常见用法和一个综合示例程序。根据实际需求,你可以灵活运用这些方法来实现各种功能。

18. QAction

QAction 是 Qt 中用于表示用户操作的动作的类,通常与菜单、工具栏和快捷键相关联。以下是 QAction 的十种常用用法,并提供一个综合示例程序:

  1. 创建并添加到菜单:使用 new 关键字创建 QAction 对象,并将其添加到菜单中。
QAction *action = new QAction("Open", parent);
menu->addAction(action);
  1. 设置文本:使用 setText() 方法可以设置动作的显示文本。
action->setText("Open File");
  1. 设置图标:使用 setIcon() 方法可以为动作设置图标。
action->setIcon(QIcon(":/icons/open.png"));
  1. 设置快捷键:使用 setShortcut() 方法可以为动作设置快捷键。
action->setShortcut(QKeySequence::Open);
  1. 设置状态:使用 setEnabled() 方法可以设置动作的启用状态。
action->setEnabled(false); // 禁用动作
  1. 设置工具提示:使用 setToolTip() 方法可以设置动作的工具提示。
action->setToolTip("Open a file"); 
  1. 设置动作类型:使用 setCheckable() 方法可以设置动作为可选中的动作。
action->setCheckable(true); // 设置动作为可选中的动作
  1. 监听动作触发:使用 triggered 信号可以监听动作的触发。
connect(action, &QAction::triggered, this, &MainWindow::onActionTriggered);
  1. 动态添加子菜单:使用 addMenu() 方法可以向动作添加子菜单。
QMenu *subMenu = new QMenu("Options", parent);
action->setMenu(subMenu);
  1. 设置动作样式:使用 setStyleSheet() 方法可以设置动作的样式。
action->setStyleSheet("QAction { background-color: yellow; }");

综合示例:

#include <QtWidgets>

int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    // Create main window
    QMainWindow mainWindow;
    QWidget *centralWidget = new QWidget;
    mainWindow.setCentralWidget(centralWidget);

    // Create menu bar
    QMenuBar *menuBar = mainWindow.menuBar();

    // File menu
    QMenu *fileMenu = new QMenu("File", menuBar);
    menuBar->addMenu(fileMenu);

    // Open action
    QAction *openAction = new QAction("Open", fileMenu);
    openAction->setShortcut(QKeySequence::Open);
    fileMenu->addAction(openAction);

    // Save action
    QAction *saveAction = new QAction("Save", fileMenu);
    saveAction->setShortcut(QKeySequence::Save);
    fileMenu->addAction(saveAction);

    // Edit menu
    QMenu *editMenu = new QMenu("Edit", menuBar);
    menuBar->addMenu(editMenu);

    // Cut action
    QAction *cutAction = new QAction("Cut", editMenu);
    cutAction->setIcon(QIcon(":/icons/cut.png"));
    editMenu->addAction(cutAction);

    // Copy action
    QAction *copyAction = new QAction("Copy", editMenu);
    copyAction->setIcon(QIcon(":/icons/copy.png"));
    editMenu->addAction(copyAction);

    // Show the main window
    mainWindow.show();

    return app.exec();
}

这些是 QAction 的一些常见用法和一个综合示例程序。根据实际需求,你可以灵活运用这些方法来实现各种功能。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/441199.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python学习笔记-Flask实现简单的抽奖程序(增加图片显示)

1.创建static文件夹,存放图片文件 2.hero列表数据更改为要抽奖的图片名 3.html中可以编写python语句,遍历hero列表内容渲染到表格中 4.在点击随机抽取后,可以获得名称,然后使用img标签,将获取的名称拼接到路径中 3.初始页面,访问127.0.0.1:5000/index 4.点击随机抽取后 5.py…

方阵的特征值与特征向量

目录 特征值 & 特征向量 相关性质 特征值 & 特征向量 相关性质

java(框架) springboot-1 基础使用+mybaits使用

学习视频&#xff1a;b站黑马java教程 tomcat spring-boot工程内嵌了tomcat服务器 所有请求经过DispatcherServlet(实现servlet接口的类)(核心控制器/前端控制器)处理&#xff0c;再通过DispatcherServlet转发给各个controller。 最后通过DispatcherServlet给浏览器响应数据…

3D数字孪生运行不起来?该检查你的电脑配置了

运行3D数字孪生项目通常需要一定的计算资源和图形处理能力。以下是一些常见的电脑配置要求&#xff0c;可以作为参考&#xff1a;1处理器&#xff08;CPU&#xff09;&#xff1a;推荐使用多核心处理器&#xff0c;如Intel Core i7或更高级别的处理器。较高的时钟频率和较大的缓…

RocketMQ的事务消息是如何实现的?

RocketMQ的事务消息是通过 TransactionListener接口来实现的。 在发送事务消息时,首先向RocketMQ Broker 发送一条‘half消息’(半消息),半消息将被存储在broker端的事务消息日志中,但是这个消息还不能被消费者消费。 接下来,在半消息发送成功后,应用程序通过执行本地事务…

msvcr110.dll丢失的5种修复方法,快速修复msvcr110.dll缺失问题

MSVCR110.dll文件的丢失可能会引发一系列的问题与不便&#xff0c;严重影响到用户的计算机使用体验。首先&#xff0c;由于MSVCR110.dll是Microsoft Visual C Redistributable Package的一部分&#xff0c;它的缺失可能导致许多基于此运行库编译的应用程序无法正常启动或运行&a…

52. N 皇后 II

52. N 皇后 II 题目-困难难度1. 回溯 题目-困难难度 n 皇后问题 研究的是如何将 n 个皇后放置在 n n 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回 n 皇后问题 不同的解决方案的数量。 示例 1&#xff1a; 输入&#xff1a;n …

蓝桥杯集训·每日一题2024 (二分,双指针)

前言&#xff1a; 开学了&#xff0c;平时学习的压力也逐渐大起来了&#xff0c;不过还算可以接受&#xff0c;等到后面阶段考的时候就不一样了&#xff0c;我目前为了转专业退选了很多课&#xff0c;这些课我都需要花时间来刷绩点&#xff0c;不然保研就没有竞争力了。我自己会…

人工蜂群算法

人工蜂群算法 人工蜂群算法&#xff08;Artificial Bee Colony Optimization,ABC&#xff09;是一种基于蜜蜂觅食行为的优化算法&#xff0c;由土耳其学者Karaboga于2005年提出&#xff0c;算法模拟蜜蜂的采蜜行为对优化问题进行求解。 算法原理 ABC算法的核心思想是将优化问…

STM32基础--构建自己的固件库

CMSIS 标准及库层次关系 因为基于 Cortex 系列芯片采用的内核都是相同的&#xff0c;区别主要为核外的片上外设的差异&#xff0c;这些差异却导致软件在同内核&#xff0c;不同外设的芯片上移植困难。为了解决不同的芯片厂商生产的 Cortex 微控制器软件的兼容性问题&#xff0…

API可视化编排,提高API可复用率

在数字化时代&#xff0c;API&#xff08;应用程序编程接口&#xff09;已成为不同软件应用之间沟通的桥梁。然而&#xff0c;如何高效管理、编排和复用这些API&#xff0c;成为了企业和开发者面临的重要挑战。随着技术的不断进步&#xff0c;RestCloud API可视化编排应运而生&…

PCIE的TLP包的封包解包原理

前言&#xff1a;开始pcie项目之前需要知道&#xff0c;本次项目我们是使用现有的框架RIFFA框架去完成设计的&#xff0c;因此比起具体代码的含义&#xff0c;更注重框架的使用。在开始项目之前需要了解PCIE的组建包过程。 一、TLP包的基本格式&#xff1a; 1.1整体包结构概述…

01-DevOps代码上线-git入门及gitlab远程仓库

一、准备学习环境 10.0.0.71-gitlab 2c2g-20GB 10.0.0.72-jenkins 2c2g-20GB 10.0.0.73-sonarqube 1c1g-20GB 10.0.0.74-nexus 1c1g-20GB 10.0.0.75-dm 1c1g-20GB &#xff08;模拟写代码服务器&#xff09; 在centos系统中&…

2024 批量下载公众号文章内容/阅读数/在看数/点赞数/留言数/粉丝数导出pdf文章备份(带留言):公众号记忆承载近1500篇历史文章在线查看,找文章方便了

关于公众号文章批量下载&#xff0c;我之前写过很多文章&#xff1a; 视频更新版&#xff1a;批量下载公众号文章内容/话题/图片/封面/音频/视频&#xff0c;导出html&#xff0c;pdf&#xff0c;excel包含阅读数/点赞数/留言数 2021陶博士2006/caoz的梦呓/刘备我祖/六神读金…

微服务架构 | 多级缓存

INDEX 通用设计概述2 优势3 最佳实践 通用设计概述 通用设计思路如下图 内容分发网络&#xff08;CDN&#xff09; 可以理解为一些服务器的副本&#xff0c;这些副本服务器可以广泛的部署在服务器提供服务的区域内&#xff0c;并存有服务器中的一些数据。 用户访问原始服务器…

HNU-算法设计与分析-甘晴void学习感悟

前言 算法设计与分析&#xff0c;仅就课程而言&#xff0c;似乎是数据结构与算法分析的延续 教材使用&#xff1a; 课程 关于课程&#xff0c;橙学长讲的非常清晰&#xff0c;我深以为然。 HNUCS-大三课程概览-CSDN博客文章浏览阅读1.3k次&#xff0c;点赞5次&#xff0c;收…

JVM-垃圾收集底层算法实现

三色标记 背景描述 在并发标记的过程中&#xff0c;因为标记期间应用线程还在继续跑&#xff0c;对象间的引用可能发生变化&#xff0c;多标和漏标的情况就有可能发生。 如何解决上面的问题&#xff1f; 引入“三色标记” 意思就是&#xff0c;把Gcroots可达性分析遍历对象过程…

【北京迅为】《iTOP-3588开发板网络环境配置手册》第4章 开发板直连电脑配置方法(无线上网)

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

qtvs2022工程cmakelist.txt添加QCharts模块

find_package(QT NAMES Qt5 COMPONENTS Core Gui Widgets OpenGL Concurrent Charts Sql Network REQUIRED) find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Gui Widgets OpenGL Charts Concurrent Sql Network REQUIRED)这里find_package只是设置搜索路径&#xff0c;为…

使用ffmpeg提取视频中的音频并保存为单声道wav

1 原始视频信息 通过ffmpeg -i命令查看视频基本信息 $ ffmpeg -i C0439.MP4 ffmpeg version 6.1-essentials_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developersbuilt with gcc 12.2.0 (Rev10, Built by MSYS2 project)configuration: --enable-gpl --enable…