每日总结
20240305
常用控件
- QPushButton(按钮):用于触发操作或响应用户点击事件。
- QLabel(标签):用于显示文本或图像。
- QLineEdit(行编辑器):单行文本输入框,用于接收用户输入的文本。
- QTextEdit(文本编辑器):多行文本输入框,用于接收用户输入的多行文本。
- QComboBox(组合框):下拉列表框,用于从预定义的选项中选择一个。
- QCheckBox(复选框):用于表示两种状态之一的复选框。
- QRadioButton(单选按钮):用于从多个互斥选项中选择一个的单选按钮。
- QSpinBox(数值调节框):用于增加或减少数值的微调框。
- QSlider(滑块):用于通过滑动来选择数值的滑块控件。
- QProgressBar(进度条):用于表示任务的完成进度。
- QGroupBox(分组框):用于将相关控件组合在一起并将其分组显示。
- QTabWidget(选项卡窗口):用于在多个页面之间进行切换的选项卡控件。
- QListWidget(列表框):用于显示项目列表,并允许用户选择其中一个或多个项目。
- QTreeWidget(树形列表框):用于以树形结构显示项目列表的控件。
- QMenuBar/QMenu/QAction(菜单栏/菜单/菜单项):用于创建应用程序的菜单和子菜单。
1.MainWindow
在Qt中,MainWindow通常是应用程序的主窗口,是用户与应用程序进行交互的主要界面。下面是MainWindow的十个常用用法:
- 创建MainWindow对象:
MainWindow w;
创建一个MainWindow对象,通常在应用程序的入口处创建,作为应用程序的主窗口。
- 设置窗口标题:
w.setWindowTitle("My Application");
设置MainWindow的标题,显示在窗口的标题栏上。
- 设置窗口尺寸:
w.resize(800, 600);
设置MainWindow的初始尺寸,即窗口的宽度和高度。
- 显示窗口:
w.show();
显示MainWindow窗口,使其可见。
- 设置中心部件:
QWidget *centralWidget = new QWidget(&w);
w.setCentralWidget(centralWidget);
设置MainWindow的中心部件,中心部件是MainWindow中放置其他控件的区域。
- 添加菜单栏:
QMenuBar *menuBar = w.menuBar();
QMenu *fileMenu = menuBar->addMenu("&File");
添加一个菜单栏,并在菜单栏上添加一个菜单。
- 添加工具栏:
QToolBar *toolBar = w.addToolBar("File");
添加一个工具栏,可以在工具栏上放置各种工具按钮。
- 添加状态栏:
QStatusBar *statusBar = w.statusBar();
statusBar->showMessage("Ready");
添加一个状态栏,用于显示应用程序的状态信息。
- 连接信号与槽:
QObject::connect(actionOpen, &QAction::triggered, this, &MainWindow::openFile);
连接菜单项或工具栏按钮的信号与槽,实现用户操作与应用程序逻辑的关联。
- 关闭窗口:
w.close();
关闭MainWindow窗口,隐藏并释放MainWindow对象的资源。
这些是MainWindow对象的一些常用用法,可以根据具体需求进行调整和扩展。
2.QPushbutton
QPushButton 是 Qt 中常用的按钮控件,用于触发用户交互操作。以下是 QPushButton 的十个常用用法:
- 创建按钮:
QPushButton *button = new QPushButton("Click me");
创建一个按钮对象,并设置按钮上显示的文本为 “Click me”。
- 设置按钮文本:
button->setText("Press here");
修改按钮上显示的文本为 “Press here”。
- 设置按钮图标:
button->setIcon(QIcon("icon.png"));
设置按钮上显示的图标,可以是一个 QIcon 对象或者图片文件路径。
- 设置按钮尺寸:
button->setFixedSize(100, 50);
设置按钮的固定尺寸为 100x50 像素,这样按钮的大小将不受内容的影响而固定。
- 设置按钮样式:
button->setStyleSheet("background-color: blue; color: white;");
通过样式表设置按钮的外观,可以设置背景色、文本颜色、边框样式等。
- 设置按钮状态:
button->setEnabled(false);
禁用按钮,使其不响应用户的点击操作。
- 连接按钮的点击信号:
connect(button, &QPushButton::clicked, this, &MainWindow::buttonClicked);
连接按钮的 clicked 信号与槽函数,当用户点击按钮时,执行槽函数中的逻辑。
- 设置按钮工具提示:
button->setToolTip("This is a button");
设置按钮的工具提示,当鼠标悬停在按钮上时显示的文本。
- 设置按钮默认状态:
button->setDefault(true);
设置按钮为默认按钮,当用户按下 Enter 键时,将模拟点击此按钮。
- 设置按钮焦点策略:
button->setFocusPolicy(Qt::StrongFocus);
设置按钮的焦点策略,确定按钮在使用 Tab 键切换焦点时的行为。
这些是 QPushButton 的常用用法,可以根据具体需求对按钮进行更多的定制和扩展。
3. layout
布局(Layout)在Qt中用于管理窗口中的控件的位置和大小,使得窗口能够在不同尺寸的设备上自适应地进行布局。下面是布局(Layout)最常用的十个用法:
- 创建布局对象:
QVBoxLayout *layout = new QVBoxLayout;
创建一个垂直布局(QVBoxLayout)对象,也可以创建水平布局(QHBoxLayout)或网格布局(QGridLayout)对象。
- 将控件添加到布局中:
layout->addWidget(widget);
将一个控件(如QPushButton、QLabel等)添加到布局中。
- 设置布局的间距:
layout->setSpacing(10);
设置布局中控件之间的间距。
- 设置布局的边距:
layout->setContentsMargins(10, 10, 10, 10);
设置布局与窗口边缘的边距。
- 设置布局对齐方式:
layout->setAlignment(Qt::AlignCenter);
设置布局中控件的对齐方式,如居中对齐、左对齐、右对齐等。
- 将布局设置为窗口的布局管理器:
QWidget *window = new QWidget;
window->setLayout(layout);
将布局设置为窗口的布局管理器,使得布局能够管理窗口中的控件。
- 设置控件的大小策略:
widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
设置控件在布局中的大小策略,如固定大小、自动大小、按比例扩展等。
- 清空布局中的控件:
layout->removeWidget(widget);
delete widget;
从布局中移除控件并释放内存。
- 插入一个空白控件:
layout->addSpacerItem(new QSpacerItem(10, 10));
在布局中插入一个空白控件,用于调整布局中控件的位置。
- 动态调整布局:
layout->invalidate();
在布局中控件发生变化时,调用该方法使布局重新计算控件的位置和大小。
这些是布局最常用的十个用法,通过合理使用布局,可以方便地实现窗口中控件的排列和布局管理。
4. label
Label(标签)是Qt中用于显示文本或图像的控件,下面是Label最常用的十个用法:
- 创建Label对象:
QLabel *label = new QLabel("Hello, World!");
创建一个Label对象,并设置其显示的文本内容为"Hello, World!"。
- 设置文本:
label->setText("New Text");
设置Label显示的文本内容为"New Text"。
- 设置字体:
label->setFont(QFont("Arial", 12));
设置Label显示文本的字体和字号。
- 设置文本对齐方式:
label->setAlignment(Qt::AlignCenter);
设置Label显示文本的对齐方式,如居中对齐、左对齐、右对齐等。
- 设置文本颜色:
label->setStyleSheet("color: red");
设置Label显示文本的颜色,可以使用CSS样式。
- 设置文本是否自动换行:
label->setWordWrap(true);
设置Label显示的文本是否自动换行。
- 设置图片:
label->setPixmap(QPixmap("image.png"));
设置Label显示的图片,可以是文件路径或者QPixmap对象。
- 设置图片缩放:
label->setScaledContents(true);
设置Label显示的图片是否自动缩放以适应Label的大小。
- 设置鼠标提示:
label->setToolTip("This is a label");
设置Label的鼠标提示,鼠标悬停在Label上时显示的文本。
- 设置文本是否可选中:
label->setTextInteractionFlags(Qt::TextSelectableByMouse);
设置Label中的文本是否可以被鼠标选中。
这些是Label最常用的十个用法,通过合理使用Label控件,可以方便地在Qt应用程序中显示文本和图像。
5. QLineEdit
QLineEdit 是 Qt 中用于输入单行文本的小部件,它提供了很多方便的功能来处理用户输入。以下是十种常用的 QLineEdit 用法:
-
文本输入: 最基本的用法是允许用户输入文本。你可以直接在 QLineEdit 对象上调用
setText()
方法设置初始文本,或者使用text()
方法获取用户输入的文本。// 设置初始文本 QLineEdit *lineEdit = new QLineEdit(this); lineEdit->setText("初始文本"); // 获取用户输入的文本 QString text = lineEdit->text();
-
密码输入: 使用
setEchoMode()
方法将 QLineEdit 设置为密码模式,这样用户输入的文本将被隐藏。QLineEdit *passwordEdit = new QLineEdit(this); passwordEdit->setEchoMode(QLineEdit::Password);
-
只读模式: 通过设置 QLineEdit 的只读属性,可以禁止用户编辑文本,但仍然可以复制和选择文本。
QLineEdit *readOnlyEdit = new QLineEdit(this); readOnlyEdit->setReadOnly(true);
-
校验器: 使用校验器来限制用户输入的内容。例如,你可以使用
setValidator()
方法设置一个正则表达式校验器,只允许用户输入数字。QIntValidator *validator = new QIntValidator(0, 100, this); QLineEdit *numericEdit = new QLineEdit(this); numericEdit->setValidator(validator);
-
提示文本: 设置一个提示文本,当用户未输入任何内容时,提示文本会显示在 QLineEdit 中。
QLineEdit *hintEdit = new QLineEdit(this); hintEdit->setPlaceholderText("请输入文本");
-
事件处理: 通过重写 QLineEdit 的事件处理函数,你可以处理键盘事件、鼠标事件等。
void MyLineEdit::keyPressEvent(QKeyEvent *event) { if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) { // 处理回车事件 } else { QLineEdit::keyPressEvent(event); } }
-
信号和槽连接: 使用信号和槽机制,可以在用户输入文本时触发相应的操作。
connect(lineEdit, &QLineEdit::textChanged, [=](const QString &text) { // 处理文本变化 });
-
自动补全: 使用自动补全功能,当用户输入时,根据已有的选项进行提示。
QStringList options = {"Option1", "Option2", "Option3"}; QCompleter *completer = new QCompleter(options, this); QLineEdit *autoCompleteEdit = new QLineEdit(this); autoCompleteEdit->setCompleter(completer);
-
拖放操作: 通过设置拖放属性,可以实现从其他应用程序或者内部的拖放文本到 QLineEdit。
QLineEdit *dragDropEdit = new QLineEdit(this); dragDropEdit->setAcceptDrops(true);
-
文本选择: 使用
selectAll()
方法可以选择整个文本,使用setSelection()
方法可以选择部分文本。lineEdit->selectAll(); // 选择整个文本 lineEdit->setSelection(startPos, endPos); // 选择部分文本
这些是 QLineEdit 的一些常见用法,你可以根据自己的需求选择适合的方法。
6. QComboBox
QComboBox 是 Qt 中常用的组合框控件,它允许用户从预定义的选项中选择一个值。以下是 QComboBox 的十种常用用法:
- 添加和移除选项:使用
addItem()
方法可以向组合框添加选项,使用removeItem()
方法可以移除选项。
QComboBox *comboBox = new QComboBox(parent);
comboBox->addItem("Option 1");
comboBox->addItem("Option 2");
comboBox->removeItem(1); // Removes "Option 2"
- 清空所有选项:使用
clear()
方法可以清空组合框中的所有选项。
comboBox->clear();
- 设置默认选中项:使用
setCurrentIndex()
方法可以设置组合框的默认选中项。
comboBox->setCurrentIndex(0); // Sets the first item as default
- 获取当前选中项的文本和索引:使用
currentText()
方法可以获取当前选中项的文本,使用currentIndex()
方法可以获取当前选中项的索引。
QString selectedText = comboBox->currentText();
int selectedIndex = comboBox->currentIndex();
- 根据索引设置选中项:使用
setCurrentIndex()
方法可以根据索引设置选中项。
comboBox->setCurrentIndex(1); // Sets the second item as selected
- 根据文本设置选中项:使用
setCurrentText()
方法可以根据文本设置选中项。
comboBox->setCurrentText("Option 2"); // Sets "Option 2" as selected
- 监听选项的选择变化:使用
currentIndexChanged
信号可以监听选项的选择变化。
connect(comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onComboBoxIndexChanged(int)));
- 自定义选项显示:使用
setItemText()
方法可以自定义选项的显示文本。
comboBox->addItem("Option 1", QVariant(1));
comboBox->setItemText(0, "Custom Option 1");
- 自定义下拉列表显示:使用
setView()
方法可以自定义下拉列表的显示方式,比如设置成树状结构或者表格结构。
QTreeView *treeView = new QTreeView();
comboBox->setView(treeView);
- 启用和禁用组合框:使用
setEnabled()
方法可以启用或禁用组合框。
comboBox->setEnabled(false); // Disables the combo box
这些是 QComboBox 的一些常见用法,根据实际需求,你可以灵活运用这些方法来实现各种功能。
7. QCheckBox
QCheckBox 是 Qt 中常用的复选框控件,它允许用户在多个选项中选择一个或多个。以下是 QCheckBox 的十种常用用法:
- 创建并添加到布局:使用
new
关键字创建 QCheckBox 对象,并将其添加到布局中。
QCheckBox *checkBox = new QCheckBox("Option 1", parent);
layout->addWidget(checkBox);
- 设置默认选中状态:使用
setChecked()
方法可以设置复选框的默认选中状态。
checkBox->setChecked(true); // Sets the checkbox checked by default
- 获取当前选中状态:使用
isChecked()
方法可以获取复选框的当前选中状态。
bool isChecked = checkBox->isChecked();
- 设置文本:使用
setText()
方法可以设置复选框的文本。
checkBox->setText("Option 1");
- 监听选中状态变化:使用
stateChanged
信号可以监听复选框的选中状态变化。
connect(checkBox, SIGNAL(stateChanged(int)), this, SLOT(onCheckBoxStateChanged(int)));
- 自定义样式:使用
setStyleSheet()
方法可以自定义复选框的样式。
checkBox->setStyleSheet("QCheckBox { color: red; }");
- 设置三态复选框:使用
setTristate()
方法可以设置复选框为三态模式,允许选中、未选中和半选中三种状态。
checkBox->setTristate(true);
- 获取三态复选框的状态:使用
checkState()
方法可以获取三态复选框的当前状态。
Qt::CheckState state = checkBox->checkState();
- 启用和禁用复选框:使用
setEnabled()
方法可以启用或禁用复选框。
checkBox->setEnabled(false); // Disables the checkbox
- 关联多个复选框:使用
setCheckable()
方法可以将多个复选框关联在一起,使它们只能选择其中一个。
checkBox->setCheckable(true);
这些是 QCheckBox 的一些常见用法,根据实际需求,你可以灵活运用这些方法来实现各种功能。
8. QRadioButton
QRadioButton 是 Qt 中常用的单选按钮控件,它允许用户在多个选项中选择一个。以下是 QRadioButton 的十种常用用法:
- 创建并添加到布局:使用
new
关键字创建 QRadioButton 对象,并将其添加到布局中。
QRadioButton *radioButton1 = new QRadioButton("Option 1", parent);
QRadioButton *radioButton2 = new QRadioButton("Option 2", parent);
layout->addWidget(radioButton1);
layout->addWidget(radioButton2);
- 设置默认选中状态:使用
setChecked()
方法可以设置单选按钮的默认选中状态。
radioButton1->setChecked(true); // Sets the radio button checked by default
- 获取当前选中状态:使用
isChecked()
方法可以获取单选按钮的当前选中状态。
bool isChecked = radioButton1->isChecked();
- 设置文本:使用
setText()
方法可以设置单选按钮的文本。
radioButton1->setText("Option 1");
- 监听选中状态变化:使用
toggled
信号可以监听单选按钮的选中状态变化。
connect(radioButton1, SIGNAL(toggled(bool)), this, SLOT(onRadioButtonToggled(bool)));
- 设置自动互斥:使用
setAutoExclusive()
方法可以设置单选按钮为自动互斥模式,确保在同一个组中只能选中一个按钮。
radioButton1->setAutoExclusive(true);
radioButton2->setAutoExclusive(true);
- 设置图标:使用
setIcon()
方法可以设置单选按钮的图标。
radioButton1->setIcon(QIcon(":/icons/icon.png"));
- 设置样式表:使用
setStyleSheet()
方法可以设置单选按钮的样式。
radioButton1->setStyleSheet("QRadioButton { color: red; }");
- 设置三态按钮:使用
setTristate()
方法可以设置单选按钮为三态模式,允许选中、未选中和半选中三种状态。
radioButton1->setTristate(true);
- 获取三态按钮的状态:使用
checkState()
方法可以获取三态按钮的当前状态。
Qt::CheckState state = radioButton1->checkState();
这些是 QRadioButton 的一些常见用法,根据实际需求,你可以灵活运用这些方法来实现各种功能。
9. QSpinBox
QSpinBox 是 Qt 中常用的数字输入框控件,它允许用户在预定义的范围内选择一个整数值。以下是 QSpinBox 的十种常用用法:
- 创建并添加到布局:使用
new
关键字创建 QSpinBox 对象,并将其添加到布局中。
QSpinBox *spinBox = new QSpinBox(parent);
layout->addWidget(spinBox);
- 设置范围:使用
setRange()
方法可以设置 QSpinBox 的取值范围。
spinBox->setRange(0, 100); // Sets the range from 0 to 100
- 设置默认值:使用
setValue()
方法可以设置 QSpinBox 的默认值。
spinBox->setValue(50); // Sets the default value to 50
- 获取当前值:使用
value()
方法可以获取 QSpinBox 的当前值。
int value = spinBox->value();
- 监听值变化:使用
valueChanged
信号可以监听 QSpinBox 的值变化。
connect(spinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged(int)));
- 设置步长:使用
setSingleStep()
方法可以设置 QSpinBox 的步长。
spinBox->setSingleStep(5); // Sets the step size to 5
- 设置特定值:使用
setValue()
方法可以设置 QSpinBox 的当前值为特定值。
spinBox->setValue(10); // Sets the value to 10
- 设置特定文本:使用
setSuffix()
方法可以设置 QSpinBox 显示的文本后缀。
spinBox->setSuffix(" km/h"); // Sets the suffix to " km/h"
- 设置特定样式:使用
setStyleSheet()
方法可以设置 QSpinBox 的样式。
spinBox->setStyleSheet("QSpinBox { background-color: yellow; }");
- 启用和禁用:使用
setEnabled()
方法可以启用或禁用 QSpinBox。
spinBox->setEnabled(false); // Disables the spin box
这些是 QSpinBox 的一些常见用法,根据实际需求,你可以灵活运用这些方法来实现各种功能。
10.QSlider
QSlider 是 Qt 中常用的滑动条控件,它允许用户在预定义的范围内选择一个值。以下是 QSlider 的十种常用用法:
- 创建并添加到布局:使用
new
关键字创建 QSlider 对象,并将其添加到布局中。
QSlider *slider = new QSlider(Qt::Horizontal, parent); // 水平滑动条
layout->addWidget(slider);
QSlider *slider = new QSlider(Qt::Vertical, parent); // 垂直滑动条
layout->addWidget(slider);
- 设置范围:使用
setRange()
方法可以设置 QSlider 的取值范围。
slider->setRange(0, 100); // 设置范围为 0 到 100
- 设置默认值:使用
setValue()
方法可以设置 QSlider 的默认值。
slider->setValue(50); // 设置默认值为 50
- 获取当前值:使用
value()
方法可以获取 QSlider 的当前值。
int value = slider->value();
- 监听值变化:使用
valueChanged
信号可以监听 QSlider 的值变化。
connect(slider, SIGNAL(valueChanged(int)), this, SLOT(onSliderValueChanged(int)));
- 设置步长:使用
setSingleStep()
方法可以设置 QSlider 的步长。
slider->setSingleStep(5); // 设置步长为 5
- 设置滑块位置:使用
setSliderPosition()
方法可以设置滑块的当前位置。
slider->setSliderPosition(30); // 设置滑块位置为 30
- 设置特定样式:使用
setStyleSheet()
方法可以设置 QSlider 的样式。
slider->setStyleSheet("QSlider::handle { background-color: red; }");
- 设置刻度显示:使用
setTickPosition()
方法可以设置刻度的位置。
slider->setTickPosition(QSlider::TicksBelow); // 设置刻度在下方显示
- 启用和禁用:使用
setEnabled()
方法可以启用或禁用 QSlider。
slider->setEnabled(false); // 禁用滑动条
这些是 QSlider 的一些常见用法,根据实际需求,你可以灵活运用这些方法来实现各种功能。
11.QProgressBar
QProgressBar 是 Qt 中常用的进度条控件,用于显示任务的完成进度。以下是 QProgressBar 的十种常用用法:
- 创建并添加到布局:使用
new
关键字创建 QProgressBar 对象,并将其添加到布局中。
QProgressBar *progressBar = new QProgressBar(parent);
layout->addWidget(progressBar);
- 设置范围:使用
setRange()
方法可以设置 QProgressBar 的取值范围。
progressBar->setRange(0, 100); // 设置范围为 0 到 100
- 设置当前值:使用
setValue()
方法可以设置 QProgressBar 的当前值。
progressBar->setValue(50); // 设置当前值为 50
- 获取当前值:使用
value()
方法可以获取 QProgressBar 的当前值。
int value = progressBar->value();
- 设置显示文本:使用
setFormat()
方法可以设置 QProgressBar 显示的文本格式。
progressBar->setFormat("Progress: %p%"); // 设置显示格式为百分比
- 设置特定样式:使用
setStyleSheet()
方法可以设置 QProgressBar 的样式。
progressBar->setStyleSheet("QProgressBar { background-color: yellow; }");
-
监听值变化:通常情况下,QProgressBar 不需要监听值变化,因为它是由程序控制的。
-
显示/隐藏:使用
setVisible()
方法可以显示或隐藏 QProgressBar。
progressBar->setVisible(true); // 显示进度条
- 启用和禁用:使用
setEnabled()
方法可以启用或禁用 QProgressBar。
progressBar->setEnabled(false); // 禁用进度条
- 设置方向:使用
setOrientation()
方法可以设置 QProgressBar 的方向。
progressBar->setOrientation(Qt::Vertical); // 设置进度条为垂直方向
这些是 QProgressBar 的一些常见用法,根据实际需求,你可以灵活运用这些方法来实现各种功能。
12. QGroupBox
QGroupBox 是 Qt 中常用的分组框控件,用于将一组相关的控件放在一个框中,以便于组织和管理。以下是 QGroupBox 的十种常用用法:
- 创建并添加到布局:使用
new
关键字创建 QGroupBox 对象,并将其添加到布局中。
QGroupBox *groupBox = new QGroupBox("Options", parent);
layout->addWidget(groupBox);
- 设置标题:使用构造函数或
setTitle()
方法可以设置 QGroupBox 的标题。
QGroupBox *groupBox = new QGroupBox("Options", parent);
或者:
groupBox->setTitle("Options");
- 添加控件:使用布局管理器向 QGroupBox 中添加控件。
QVBoxLayout *groupBoxLayout = new QVBoxLayout;
groupBoxLayout->addWidget(new QPushButton("Button 1"));
groupBoxLayout->addWidget(new QPushButton("Button 2"));
groupBox->setLayout(groupBoxLayout);
- 设置样式:使用
setStyleSheet()
方法可以设置 QGroupBox 的样式。
groupBox->setStyleSheet("QGroupBox { background-color: yellow; }");
- 设置边框:使用
setFlat()
方法可以设置 QGroupBox 的边框是否显示。
groupBox->setFlat(true); // 隐藏边框
- 启用和禁用:使用
setEnabled()
方法可以启用或禁用 QGroupBox。
groupBox->setEnabled(false); // 禁用 QGroupBox
- 设置对齐方式:使用
setAlignment()
方法可以设置 QGroupBox 中的控件的对齐方式。
groupBox->setAlignment(Qt::AlignCenter); // 设置控件居中对齐
- 设置标题对齐方式:使用
setTitleAlignment()
方法可以设置 QGroupBox 标题的对齐方式。
groupBox->setTitleAlignment(Qt::AlignCenter); // 设置标题居中对齐
- 设置平铺布局:使用
setFlatLayout()
方法可以设置 QGroupBox 中的控件以平铺方式布局。
groupBox->setFlatLayout(true); // 设置控件以平铺方式布局
- 监听状态变化:通常情况下,QGroupBox 不需要监听状态变化,因为它通常是由用户交互而改变的。
这些是 QGroupBox 的一些常见用法,根据实际需求,你可以灵活运用这些方法来实现各种功能。
13. QTabWidget
QTabWidget 是 Qt 中常用的选项卡控件,用于在同一窗口中显示多个选项卡页面。以下是 QTabWidget 的十种常用用法:
- 创建并添加到布局:使用
new
关键字创建 QTabWidget 对象,并将其添加到布局中。
QTabWidget *tabWidget = new QTabWidget(parent);
layout->addWidget(tabWidget);
- 添加选项卡页:使用
addTab()
方法可以添加选项卡页面,并设置标题和页面内容。
QWidget *page1 = new QWidget;
tabWidget->addTab(page1, "Page 1");
QWidget *page2 = new QWidget;
tabWidget->addTab(page2, "Page 2");
- 移除选项卡页:使用
removeTab()
方法可以移除选项卡页面。
tabWidget->removeTab(index); // 移除指定索引的选项卡页
- 设置当前页:使用
setCurrentIndex()
方法可以设置当前显示的选项卡页面。
tabWidget->setCurrentIndex(index); // 设置当前显示的选项卡页为指定索引
- 获取当前页索引:使用
currentIndex()
方法可以获取当前显示的选项卡页面的索引。
int currentIndex = tabWidget->currentIndex();
- 设置选项卡位置:使用
setTabPosition()
方法可以设置选项卡的位置。
tabWidget->setTabPosition(QTabWidget::North); // 设置选项卡在顶部显示
- 设置样式:使用
setStyleSheet()
方法可以设置 QTabWidget 的样式。
tabWidget->setStyleSheet("QTabWidget::tab { background-color: yellow; }");
- 监听选项卡变化:使用
currentChanged
信号可以监听选项卡的变化。
connect(tabWidget, SIGNAL(currentChanged(int)), this, SLOT(onTabChanged(int)));
- 启用和禁用:使用
setEnabled()
方法可以启用或禁用 QTabWidget。
tabWidget->setEnabled(false); // 禁用选项卡控件
- 设置自定义图标:使用
setTabIcon()
方法可以为选项卡设置自定义图标。
tabWidget->setTabIcon(index, icon); // 为指定索引的选项卡设置图标
这些是 QTabWidget 的一些常见用法,根据实际需求,你可以灵活运用这些方法来实现各种功能。
14. QListWidget
QListWidget 是 Qt 中常用的列表控件,用于显示一个可滚动的项目列表。以下是 QListWidget 的十种常用用法:
- 创建并添加到布局:使用
new
关键字创建 QListWidget 对象,并将其添加到布局中。
QListWidget *listWidget = new QListWidget(parent);
layout->addWidget(listWidget);
- 添加列表项:使用
addItem()
方法可以向 QListWidget 中添加列表项。
listWidget->addItem("Item 1");
listWidget->addItem("Item 2");
- 设置单选模式:使用
setSelectionMode()
方法可以设置列表的选择模式为单选。
listWidget->setSelectionMode(QAbstractItemView::SingleSelection);
- 设置多选模式:使用
setSelectionMode()
方法可以设置列表的选择模式为多选。
listWidget->setSelectionMode(QAbstractItemView::MultiSelection);
- 获取选中项:使用
selectedItems()
方法可以获取当前选中的项。
QList<QListWidgetItem*> selectedItems = listWidget->selectedItems();
- 清空所有项:使用
clear()
方法可以清空列表中的所有项。
listWidget->clear();
- 设置自定义项:使用
setItemWidget()
方法可以为列表中的项设置自定义控件。
QWidget *customWidget = new QWidget;
QPushButton *button = new QPushButton("Click Me", customWidget);
listWidget->setItemWidget(item, customWidget);
- 获取当前项:使用
currentItem()
方法可以获取当前选中的项。
QListWidgetItem *currentItem = listWidget->currentItem();
- 启用和禁用:使用
setEnabled()
方法可以启用或禁用 QListWidget。
listWidget->setEnabled(false); // 禁用列表控件
- 监听项选择变化:使用
itemSelectionChanged
信号可以监听列表项的选择变化。
connect(listWidget, SIGNAL(itemSelectionChanged()), this, SLOT(onItemSelectionChanged()));
这些是 QListWidget 的一些常见用法,根据实际需求,你可以灵活运用这些方法来实现各种功能。
15.QTreeWidget
QTreeWidget 是 Qt 中常用的树形控件,用于显示树形结构的数据。以下是 QTreeWidget 的十种常用用法,并提供一个综合示例:
- 创建并添加到布局:使用
new
关键字创建 QTreeWidget 对象,并将其添加到布局中。
QTreeWidget *treeWidget = new QTreeWidget(parent);
layout->addWidget(treeWidget);
- 设置列数:使用
setColumnCount()
方法可以设置树控件的列数。
treeWidget->setColumnCount(3); // 设置树控件有3列
- 添加树节点:使用
addTopLevelItem()
方法可以添加顶层树节点。
QTreeWidgetItem *topItem = new QTreeWidgetItem(treeWidget);
topItem->setText(0, "Top Level Item");
- 添加子节点:使用
addChild()
方法可以添加子节点。
QTreeWidgetItem *childItem = new QTreeWidgetItem(topItem);
childItem->setText(0, "Child Item");
- 设置节点文本:使用
setText()
方法可以设置节点的文本。
topItem->setText(1, "Data 1");
childItem->setText(1, "Data 2");
- 设置节点图标:使用
setIcon()
方法可以设置节点的图标。
topItem->setIcon(0, QIcon(":/icons/folder.png"));
childItem->setIcon(0, QIcon(":/icons/file.png"));
- 展开和折叠节点:使用
expandItem()
和collapseItem()
方法可以展开和折叠节点。
treeWidget->expandItem(topItem); // 展开节点
treeWidget->collapseItem(topItem); // 折叠节点
- 获取当前选中的节点:使用
currentItem()
方法可以获取当前选中的节点。
QTreeWidgetItem *currentItem = treeWidget->currentItem();
- 启用和禁用:使用
setEnabled()
方法可以启用或禁用 QTreeWidget。
treeWidget->setEnabled(false); // 禁用树控件
- 监听节点选择变化:使用
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 的十种常用用法,并提供一个综合示例程序:
- 创建并添加到窗口:使用
new
关键字创建 QMenuBar 对象,并将其设置为窗口的菜单栏。
QMenuBar *menuBar = new QMenuBar(parent);
window->setMenuBar(menuBar);
- 添加菜单:使用
addMenu()
方法可以添加菜单到菜单栏。
QMenu *fileMenu = menuBar->addMenu("File");
- 添加菜单项:使用
addAction()
方法可以向菜单中添加菜单项。
fileMenu->addAction("Open");
fileMenu->addAction("Save");
- 添加子菜单:使用
addMenu()
方法可以向菜单中添加子菜单。
QMenu *editMenu = menuBar->addMenu("Edit");
QMenu *copySubMenu = editMenu->addMenu("Copy");
copySubMenu->addAction("Copy Text");
copySubMenu->addAction("Copy Image");
- 设置快捷键:使用
setShortcut()
方法可以为菜单项设置快捷键。
fileMenu->addAction("Open")->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_O));
- 添加分隔符:使用
addSeparator()
方法可以在菜单中添加分隔符。
fileMenu->addSeparator();
- 监听菜单项点击事件:使用
triggered
信号可以监听菜单项的点击事件。
connect(fileMenu, SIGNAL(triggered(QAction*)), this, SLOT(onFileMenuActionTriggered(QAction*)));
- 设置菜单项状态:使用
setEnabled()
方法可以设置菜单项的状态(启用/禁用)。
fileMenu->actions().at(0)->setEnabled(false); // 禁用第一个菜单项
- 添加工具栏:使用
addToolBar()
方法可以添加工具栏到菜单栏。
QToolBar *toolBar = new QToolBar("Toolbar", parent);
menuBar->addToolBar(toolBar);
- 设置样式:使用
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 的十种常用用法,并提供一个综合示例程序:
- 创建并添加到菜单栏:使用
new
关键字创建 QMenu 对象,并将其添加到菜单栏中。
QMenu *menu = new QMenu("File", menuBar);
menuBar->addMenu(menu);
- 添加菜单项:使用
addAction()
方法可以向菜单中添加菜单项。
menu->addAction("New");
menu->addAction("Open");
- 设置快捷键:使用
setShortcut()
方法可以为菜单项设置快捷键。
menu->addAction("Save")->setShortcut(QKeySequence::Save);
menu->addAction("Exit")->setShortcut(QKeySequence::Quit);
- 添加分隔符:使用
addSeparator()
方法可以在菜单中添加分隔符。
menu->addSeparator();
- 添加子菜单:使用
addMenu()
方法可以向菜单中添加子菜单。
QMenu *subMenu = new QMenu("Options", menu);
menu->addMenu(subMenu);
- 设置菜单项图标:使用
setIcon()
方法可以为菜单项设置图标。
menu->addAction("Cut")->setIcon(QIcon(":/icons/cut.png"));
- 菜单项的禁用和启用:使用
setEnabled()
方法可以禁用或启用菜单项。
menu->addAction("Paste")->setEnabled(false);
- 监听菜单项触发:使用
triggered
信号可以监听菜单项的触发。
connect(menu, SIGNAL(triggered(QAction*)), this, SLOT(onMenuActionTriggered(QAction*)));
- 设置菜单的样式:使用
setStyleSheet()
方法可以设置菜单的样式。
menu->setStyleSheet("QMenu { background-color: yellow; }");
- 设置菜单的上下文菜单:使用
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 的十种常用用法,并提供一个综合示例程序:
- 创建并添加到菜单:使用
new
关键字创建 QAction 对象,并将其添加到菜单中。
QAction *action = new QAction("Open", parent);
menu->addAction(action);
- 设置文本:使用
setText()
方法可以设置动作的显示文本。
action->setText("Open File");
- 设置图标:使用
setIcon()
方法可以为动作设置图标。
action->setIcon(QIcon(":/icons/open.png"));
- 设置快捷键:使用
setShortcut()
方法可以为动作设置快捷键。
action->setShortcut(QKeySequence::Open);
- 设置状态:使用
setEnabled()
方法可以设置动作的启用状态。
action->setEnabled(false); // 禁用动作
- 设置工具提示:使用
setToolTip()
方法可以设置动作的工具提示。
action->setToolTip("Open a file");
- 设置动作类型:使用
setCheckable()
方法可以设置动作为可选中的动作。
action->setCheckable(true); // 设置动作为可选中的动作
- 监听动作触发:使用
triggered
信号可以监听动作的触发。
connect(action, &QAction::triggered, this, &MainWindow::onActionTriggered);
- 动态添加子菜单:使用
addMenu()
方法可以向动作添加子菜单。
QMenu *subMenu = new QMenu("Options", parent);
action->setMenu(subMenu);
- 设置动作样式:使用
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 的一些常见用法和一个综合示例程序。根据实际需求,你可以灵活运用这些方法来实现各种功能。