1.新建一个空项目(其它项目—>空QT项目):


添加新文件(选择C++Class)

MyWidget.h

#ifndef MYWIDGET_H
#define MYWIDGET_H
 
#include <QWidget>
#include <QTextEdit>
class MyWidget : public QWidget
{
    Q_OBJECT
public:
    explicit MyWidget(QWidget *parent);
 
    QTextEdit* _edit;
 
signals:
 
public slots:
    void slotComboBoxIndexChanged(const QString&);
};
 
#endif // MYWIDGET_H

05Controls.pro文件的内容

HEADERS += \
    MyWidget.h
 
SOURCES += \
    MyWidget.cpp
QT += widgets gui
CONFIG += C++11

MyWidget.cpp

#include
"MyWidget.h"

#include
<QApplication>

#include
<QLabel>        
//
disply
static
text,
or
image

#include
<QPushButton>

#include
<QLineEdit>     
//
single
line

#include
<QComboBox>     
//下拉选

#include
<QCheckBox>     
//复选框

#include
<QRadioButton>  
//单选按钮

#include
<QTextEdit>     
//
multi
lines,
rich
text

#include
<QTextBrowser>  
//
readonly
textedit

#include
<QGroupBox>

#include
<QSlider>       
//
模拟方式显示数值

#include
<QSpinBox>      
//
数字

#include
<QDateEdit>

#include
<QTimeEdit>

#include
<QDateTimeEdit>

#include
<QTabWidget>    
//
不介绍,不算控件

#include
<QCompleter>

#include
<QHBoxLayout>   
//布局控件

#include
<QDebug>        
//这里用于测试用

#include
<QPixmap>

#include
<QVBoxLayout>

#include
<QLCDNumber>

MyWidget::MyWidget(QWidget
*parent)
:

QWidget(parent)

{

QVBoxLayout*
lay
=
new
QVBoxLayout(this);

QLabel*
label;

QComboBox*
combo;

QPushButton*
button;

QRadioButton*
radio;

QTextEdit*
edit;

QGroupBox*
group;

//说明可以通过编写样式的方式修改GUI中字体的样式

lay->addWidget(label
=
new
QLabel("<a
href=www.baidu.com>百度</a>"));

//通过下面一句在lable上添加一个图片,当加了下面一句之后,上面的baidu字就会被覆盖

//label->setPixmap(QPixmap("../aaa.png"));

//当选中了lable之后会,输出字符串

connect(label,
&QLabel::linkActivated,
[](QString
str){

qDebug()
<<
str;

});

lay->addWidget(button
=
new
QPushButton("Button"));

//为button添加样式

button->setStyleSheet("QPushButton
{font:bold
16px;
color:red;
padding:5px}");

lay->addWidget(radio
=
new
QRadioButton("Radio"));

radio->setStyleSheet("QRadioButton
{font:bold
16px;
color:red;
padding:5px}");

//为单选按钮添加事件,true或者false

connect(radio,
&QRadioButton::clicked,
[](bool
v){

qDebug()
<<
v;

});

lay->addWidget(new
QCheckBox("check
box"));

//添加下拉选

lay->addWidget(combo
=
new
QComboBox());

combo->addItem("Select
item1");

combo->addItem("Select
item2");

//设置下拉选可以被编辑

combo->setEditable(true);

//当下拉选selectChanged之后,用信号槽进行处理

connect(combo,
SIGNAL(currentIndexChanged(QString)),
this,
SLOT(slotComboBoxIndexChanged(QString)));

combo->setCompleter(new
QCompleter(combo->model()));

//说明多行文本框之中可以使用html标签页面

lay->addWidget(edit
=
new
QTextEdit);

edit->setText("<table
border=1><tr><th>head1</th><th>head2</th></tr>"

"<tr><td>value1</td><td>value2</td></tr>"

"<tr><td>value3</td><td>value4</td></tr>"

"</table><br>"

"<img
src=../aaa.png></img>");

_edit
=
edit;

connect(edit,
&QTextEdit::textChanged,
[&](){

//  
QTextEdit*
edit
=
(QTextEdit*)this->sender();

qDebug()
<<
_edit->toPlainText();

});

//设置竖直方向上有水平滚动条

edit->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);

//设置水平方向上没有滚动条

edit->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);

lay->addWidget(group
=
new
QGroupBox("Some
items"));

QHBoxLayout*
hBoxLay;

group->setLayout(hBoxLay
=
new
QHBoxLayout);

hBoxLay->addWidget(new
QPushButton("aaaa"));

hBoxLay->addWidget(new
QPushButton("aaaa"));

QSlider*
slider;

QSpinBox*
spinBox;

lay->addWidget(slider
=
new
QSlider(Qt::Horizontal));

slider->setMaximum(100);

slider->setMinimum(0);

lay->addWidget(spinBox
=
new
QSpinBox);

spinBox->setMaximum(100);

spinBox->setMinimum(0);

connect(slider,
SIGNAL(valueChanged(int)),
spinBox,
SLOT(setValue(int)));

connect(spinBox,
SIGNAL(valueChanged(int)),
slider,
SLOT(setValue(int)));

lay->addWidget(new
QDateTimeEdit);

//设置LCD样式的显示状态

QLCDNumber*
lcd;

lay->addWidget(lcd
=
new
QLCDNumber(10));

lcd->display(12345);

lcd->setMode(QLCDNumber::Hex);

lcd->setSegmentStyle(QLCDNumber::Outline);

}

void
MyWidget::slotComboBoxIndexChanged(const
QString
&str)

{

qDebug()
<<
"slotComboBoxIndexChanged"
<<
str;

}

int
main(int
argc,
char**
argv)

{

QApplication
app(argc,
argv);

MyWidget
w;

w.show();

return
app.exec();

}

运行结果:

2.QLabel,QPushButton,QLineEdit,QComboBox,QCheckBox,QRadioButton,QTextEdit,QTextBrowser,QGroupBox,QSl的更多相关文章

  1. qobject_cast<QPushButton*>(sender()) 简化信号与槽的编写(sender()取得发信号的对象后,就取得了它的全部信息,为所欲为)

    当你觉得写代码是一件重复性极高的工作时,这时你就应该考虑换个方式来实现了. 提高代码效率,减少代码量. 代码片: void Widget::onClicked() { QPushButton* but ...

  2. make menuconfig出错,需要安装libncurses5-dev找不到文件的终极解决办法(不必更换源,适用于ubuntu 32位平台)

    make menuconfig 错误,显示有curse 字样的文件没有装.用apt-get install 找不到,网上其他的办法说是源的问题,所以又更新了一下源,但是还是不好用,网速慢,更新太慢. ...

  3. Repository 仓储,你的归宿究竟在哪?(二)-这样的应用层代码,你能接受吗?

    写在前面 关于"Repository 仓储,你的归宿究竟在哪?"这个系列,本来是想写个上下篇,但是现在觉得,很有多东西需要明确,我也不知道接下来会写多少篇,所以上一篇的标题就改成了 ...

  4. 22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表。然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法showB输出大写的英文字母表。最后编写主类C,在主类的main方法 中测试类A与类B。

    22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表.然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法sh ...

  5. 如果在配置中将“system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled”设置为 true,则需要终结点指定相对地址。如果在终结点上指定相对侦听 URI,则该地址可以是绝对地址。若要解决此问题,请为终结点“http://localhost/Service1.svc”指定相对 URI。

    问题: 如果在配置中将"system.serviceModel/serviceHostingEnvironment/multipleSiteBindingsEnabled"设置为 ...

  6. 工作7年,从《一个苏州IT人的5年挨踢经历》系列开始,博客1年半,纯纪念

    真正涉足CSDN,还是从<一个苏州IT人的5年挨踢经历>系列的发帖开始,当时大家比较捧场,遂把帖子内容整理,其后创建CSDN博客并发表于其上.有了这个开端,后续就习惯性的开始在CSDN写技 ...

  7. 与QString("我是中文")完全一样,你必须告诉tr这个窄字符串是何种编码?你不告诉它,它就用latin1。于是所谓的乱码问题就出来了。

    在论坛中漂,经常遇到有人遇到tr相关的问题.用tr的有两类人: (1)因为发现中文老出问题,然后搜索,发现很多人用tr,于是他也开始用tr (2)另一类人,确实是出于国际化的需要,将需要在界面上显示的 ...

  8. highestAvailable比较灵活,毕竟大多数功能不需要系统最高权限(四种方法:屏蔽UAC,右键以管理员身份运行,增加manisfest,制作数字证书)

    打开VS2005.VS2008.VS2010工程,查看工程文件夹中的Properties文件夹下是否有app.manifest这个文件:如没有,按如下方式创建:鼠标右击工程在菜单中选择“属性”,点击工 ...

  9. GitBook是一个命令行工具(Node.js库),我们可以借用该工具使用Github/Git和Markdown来制作精美的图书,但它并不是一本关于Git的教程哟。

    GitBook是一个命令行工具(Node.js库),我们可以借用该工具使用Github/Git和Markdown来制作精美的图书,但它并不是一本关于Git的教程哟. 支持输出多种格式 GitBook支 ...

随机推荐

  1. ●UVA 10674 Tangents

    题链: https://vjudge.net/problem/UVA-10674 题解: 计算几何,求两个圆的公切线. <算法竞赛入门经典——训练指南>P266,讲得很清楚的. 大致是分为 ...

  2. ICM Technex 2017 and Codeforces Round #400 (Div. 1 + Div. 2, combined)

    前四题比较水,E我看出是欧拉函数傻逼题,但我傻逼不会,百度了下开始学,最后在加时的时候A掉了 AC:ABCDE Rank:182 Rating:2193+34->2227 终于橙了,不知道能待几 ...

  3. bzoj 2004: [Hnoi2010]Bus 公交线路

    Description 小Z所在的城市有N个公交车站,排列在一条长(N-1)km的直线上,从左到右依次编号为1到N,相邻公交车站间的距 离均为1km. 作为公交车线路的规划者,小Z调查了市民的需求,决 ...

  4. 51Nod 1555 布丁怪

    题目描述: 布丁怪这一款游戏是在一个n×n 的矩形网格中进行的,里面有n个网格有布丁怪,其它的一些格子有一些其它的游戏对象.游戏的过程中是要在网格中移动这些怪物.如果两个怪物碰到了一起,那么他们就会变 ...

  5. Java文件操作(新建,遍历,删除)

    //创建文件 private static void createFile(File file){ try { if(!file.exists()){ if(file.getParentFile() ...

  6. JavaScript实现简单的双向数据绑定

    什么是双向数据绑定 双向数据绑定简单来说就是UI视图(View)与数据(Model)相互绑定在一起,当数据改变之后相应的UI视图也同步改变.反之,当UI视图改变之后相应的数据也同步改变. 双向数据绑定 ...

  7. 基于pytorch实现HighWay Networks之Highway Networks详解

    (一)简述---承接上文---基于pytorch实现HighWay Networks之Train Deep Networks 上文已经介绍过Highway Netwotrks提出的目的就是解决深层神经 ...

  8. 腾讯北京SNG一面

    写在前面 面试官超nice,以一种聊天的形式跟你交流.上午10点10左右开始,11点40结束.总的来说,基础还可以,但是有些东西的底层学的还是不够深. 问题回忆 自我介绍 怎么平衡科研与项目开发之间的 ...

  9. React .js框架的环境搭建

    React学习笔记(一)- 环境搭建   最近在学习react相关的知识,刚刚起步,一路遇坑不断.自己做个笔记,方便日后总结,也供相同趣味的小伙伴一起交流探讨. 学习时主要参考官网的教程:https: ...

  10. day08 JSP

    day08 JSP 1. jsp 入门和 jsp 运行原理 2. jsp 语法 2.1 jsp 模板元素:jsp 页面中的 html 内容.它定义了网络基本骨架,即定义了页面结构和外观. 2.2 js ...