-
- 2.1. 下拉列表:
- 2.2. 字体输入列表
- 2.3. 行输入框
- 2.4. 文本框
- 2.5. 普通文本框
- 2.6. 选值框
- 2.7. 浮点型选值框 (和上面类似)
- 2.8. 时间编辑框
- 2.9. 日期编辑框
- 2.10. 日期时间编辑框 收集日期和时间
- 2.11. 旋钮
- 2.12. 滚动条: 推荐使用QScrollArea
- 2.13. QSlider
-
- 3.1. Label 标签:(QLabel):
- 3.2. QTextborwser 文本框:
- 3.3. QCalendarWidget 日历:
- 3.4. QLCDNumber lcd显示器
- 3.5. QProgressBar 进度条显示
常用控件对象:
1. 布局控件
水平布局(QHBoxLayout) 垂直布局(QVBoxLayout) 表格布局(QGridLayout) form双列布局(QFormLayout)
弹簧控件(QSpacerItem)
- 水平布局
-
QHBoxLayout *hboxlayout = new QHBoxLayout; hboxlayout->addWidget(q_time_edit); hboxlayout->addWidget(q_push_button_time); this->setLayout(h_boxlayout);
-
- 垂直布局
-
QVBoxLayout *vlayout = new QVBoxLayout; vlayout->addWidget(q_double_spin_box); vlayout->addWidget(q_plain_text_edit); h_boxlayout->addLayout(vlayout);
-
- 表格布局
-
QGridLayout *gridLayout = new QGridLayout(); for (int i = 0, k = 1; i < 3; i++) { for (int j = 0; j < 3; j++, k++) { gridLayout->addWidget(button_num_0_9[k], i, j); } }
-
- 弹簧控件:通过宽高属性的固定和自动可以调整
-
// 通过 第二和第三个参数确定方向 spacer = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
-
2. 输入控件:input widget
下拉列表:(QComboBox) 字体输入列表(QFontComboBox)
行输入框 (QLineEdit) 文本框(QTextEidt) 普通文本框(QPlainTextEdit)
选值框(QSpinBox) 浮点型选值框(QDoubleSpinBox)
时间编辑框(QTimeEdit) 日期编辑框(QDateEdit) 日期时间编辑框(QDateTimeEdit)
旋钮(QDial)
滚动条(QScrollBar) 滑动条(QSlider)
2.1. 下拉列表:
-
多用于列表选择,可以添加字符串等对象;
-
#include <QComboBox> QComboBox *q_combo_box; q_combo_box = new QComboBox(); q_combo_box->addItem("one"); q_combo_box->addItem("two"); q_combo_box->addItem("test");
2.2. 字体输入列表
-
可用于简易的字体类型选择输入
-
QFontComboBox *q_font_combo_box; q_font_combo_box = new QFontComboBox();
2.3. 行输入框
-
用于输入一行信息:用户名,密码的输入
-
QLineEdit *q_line_edit; q_line_edit = new QLineEdit(); q_line_edit->setPlaceholderText("这是行输入框");
2.4. 文本框
-
多行文本输入,显示、多用于显示,支持html显示
-
QTextEdit * q_text_edit; q_text_edit = new QTextEdit("这是文本输入框"); q_text_edit->setMinimumHeight(40);
2.5. 普通文本框
-
多行文本输入,显示、多用于对文本经常处理的情况。QTextEdit多一些文本处理能力
-
q_plain_text_edit = new QPlainTextEdit("这是普通文本输入框");
2.6. 选值框
-
用于输入数值,限定了输入的只能是数字;
-
q_spin_box = new QSpinBox;
2.7. 浮点型选值框 (和上面类似)
-
q_double_spin_box = new QDoubleSpinBox; q_double_spin_box->setValue(1.25);
2.8. 时间编辑框
-
编辑时间 收集时间
-
q_time_edit = new QTimeEdit(QTime::currentTime());
2.9. 日期编辑框
- 编辑日期 收集日期
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kIG2khqe-1659017174412)(assets/20220728_194528_image.png)]
-
q_date_edit = new QDateEdit(QDate::currentDate());
2.10. 日期时间编辑框 收集日期和时间
-
q_date_time_edit = new QDateTimeEdit(QDateTime::currentDateTime());
2.11. 旋钮
-
收集输入值
-
q_dial = new QDial(); q_dial->setMaximum(100); q_dial->setMinimum(-100);
2.12. 滚动条: 推荐使用QScrollArea
-
-
q_scrollbar = new QScrollBar();
-
2.13. QSlider
-
q_slider = new QSlider; q_slider->setOrientation(Qt::Horizontal);
3. 输出控件:output widget
Label 标签:(QLabel) 文本浏览框:(QTextBorwser) 日历(QCalendarWidget)
lcd显示器 (QLCDNumber) 进度条显示:QProgressBar
3.1. Label 标签:(QLabel):
- 功能: 支持显示文字,以及图片和动图
- 样式:
-
label_text = new QLabel("这个是个 label 文本"); label_img = new QLabel("这个是 img "); label_gif = new QLabel("这个是 gif "); label_img->setPixmap(QPixmap("../need/1.jpg")); QMovie *m = new QMovie("../need/1.gif");
3.2. QTextborwser 文本框:
-
功能:支持html语法。
-
样式:
-
TextBrowser = new QTextBrowser(); TextBrowser->setText("<H1>AAAA<H1> HHHHH");
3.3. QCalendarWidget 日历:
-
功能:显示一个日历框,并提供了基础的功能;
-
样式:
-
calendar = new QCalendarWidget();
3.4. QLCDNumber lcd显示器
-
功能:模拟led7段数码管,显示数值,可以显示int和double类型的,
-
样式:
-
lcd = new QLCDNumber(); lcd->setMinimumHeight(50); lcd->display(20); lcd->setDigitCount(1);//设置显示长度
3.5. QProgressBar 进度条显示
-
功能:显示进度条 ,一般通过定时器进行调整值,不然会卡死
-
样式:
-
progressbar = new QProgressBar(); progressbar->setMaximum(100); progressbar->setValue(10); t = new QTimer(this); connect(t, SIGNAL(timeout()), this, SLOT(timer_timeoutmy())); void display::timer_timeoutmy(void) { progressbar->setValue(i++); if (i == 100) i = 0; qDebug() << "test " << i; }
4. 容器控件:Containers
基础容器(QWidget) 分组框(QGroupBox) 滚动窗口(QScrollArea)
工具箱框(QToolBox) 带选项的框(QTabWidget) 栈框(QStackedWidget)
4.1. 分组框
-
提供了一个自带标头的框框 常用于
题目年后 A: 1 B: 2 C: 3 D: 4
q_group_box = new QGroupBox; button1 = new QRadioButton("1"); button2 = new QRadioButton("2"); button3 = new QRadioButton("3"); QHBoxLayout *hlayout = new QHBoxLayout; hlayout->addWidget(button1); hlayout->addWidget(button2); hlayout->addWidget(button3); q_group_box->setLayout(hlayout); QVBoxLayout *vlayout = new QVBoxLayout; vlayout->addWidget(q_group_box); this->setLayout(vlayout);
4.2. 工具箱框
-
实现类似工具分类
-
样式:
-
button1 = new QRadioButton("1"); button2 = new QRadioButton("2"); button3 = new QRadioButton("3"); q_group_box->setLayout(hlayout); QVBoxLayout *vlayout = new QVBoxLayout; q_tool_box = new QToolBox; q_tool_box->addItem(button1, "one"); q_tool_box->addItem(button2, "two"); q_tool_box->addItem(button3, "three"); vlayout->addWidget(q_tool_box); this->setLayout(vlayout);
4.3. 带选项的窗口:
-
样式
-
button1 = new QRadioButton("1"); button2 = new QRadioButton("2"); button3 = new QRadioButton("3"); QVBoxLayout *vlayout = new QVBoxLayout; q_tab_widget = new QTabWidget(); q_tab_widget->addTab(button1, "one"); q_tab_widget->addTab(button2, "two"); q_tab_widget->addTab(button3, "three"); q_tab_widget->setTabsClosable(true); vlayout->addWidget(q_tab_widget);
4.4. 栈框:
-
样式
-
使用:可以使用setCurrentWidget (QWidget *widget ) 方法设置显示的页面,可以向它里面添加多个页面
-
button1 = new QRadioButton("1"); button2 = new QRadioButton("2"); button3 = new QRadioButton("3"); QVBoxLayout *vlayout = new QVBoxLayout; q_stacked_widget = new QStackedWidget; q_stacked_widget->addWidget(button1); q_stacked_widget->addWidget(button2); q_stacked_widget->addWidget(button3); QVBoxLayout *vlayout1 = new QVBoxLayout; vlayout->addWidget(q_stacked_widget); vlayout->addLayout(vlayout1); button4 = new QPushButton("4"); button5 = new QPushButton("5"); button6 = new QPushButton("6"); vlayout1->addWidget(button4); vlayout1->addWidget(button5); vlayout1->addWidget(button6); q_stacked_widget->setCurrentIndex(0); this->setLayout(vlayout); connect(button4, SIGNAL(clicked()), this, SLOT(showMy())); connect(button5, SIGNAL(clicked()), this, SLOT(showMy())); connect(button6, SIGNAL(clicked()), this, SLOT(showMy())); } void Containers::showMy() { QPushButton *button = static_cast<QPushButton *>(sender()); if (button->text() == "4") { q_stacked_widget->setCurrentIndex(0); } else if (button->text() == "5") { q_stacked_widget->setCurrentIndex(1); } else if (button->text() == "6") q_stacked_widget->setCurrentIndex(2); }
5. 按钮控件:putton
普通按钮(QPushButton)、单选按钮(QRadioButton),复选框按钮(QCheckBox)、工具按钮(QToolButton)
5.1. 普通按钮:
拥有信号:
void animateClick(int msec = 100)
void click()
void setChecked(bool)
void setIconSize(const QSize &size)
void toggle()
//需要的头
#include <QPushButton>
#include <QDebug>
//类中的声明
QPushButton *pushbutton;
//定义 和 点击信号绑定槽函数
pushbutton=new QPushButton("这是普通按钮",this);
connect(pushbutton, SIGNAL(clicked()), this, SLOT(pushbuttonClicked()));
//槽函数
void button::pushbuttonClicked()
{
qDebug() << "pushbutton clicked";
}
5.2. 单选按钮
- 在同一组单选按钮中只能选一个,当选择另一个时会导致之前被选择的取消掉
- 分组:在同一个Wdiget(及派生类中的单选按钮都是一组的)