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. 计蒜客NOIP模拟赛(2) D2T3 银河战舰

    [问题描述]    瑞奥和玛德利德是非常好的朋友.瑞奥平时的爱好是吹牛,玛德利德的爱好是戳穿瑞奥吹的牛.    这天瑞奥和玛德利德来到了宇宙空间站,瑞奥向玛德利德炫耀这个空间站里所有的银河战舰都是自己 ...

  2. 【BZOJ4196】【Noi2015】软件包管理器

    原题传送门 题意: 给你一棵树,有2种操作: 1.使得某个点到根节点路径上的所有点权值赋为1. 2.使得某节点的子树中所有节点权值赋为0. 每次操作要求输出权值更改的节点个数. 解题思路: 显然是用树 ...

  3. 2015 多校联赛 ——HDU5303(贪心)

    Delicious Apples Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Other ...

  4. 例10-4 uva10791(唯一分解)

    题意:求最小公倍数为n的数的和的最小值. 如12:(3,4),(2,6),(1,12)最小为7 要想a1,a2,a3……an的和最小,要保证他们两两互质,只要存在不互质的两个数,就一定可以近一步优化 ...

  5. 习题 7-2 uva225(回溯)

    题意:从(0.0)点出发,第一次走一步……第k次走k步,且每次必须转90度,不能走重复的点.求k次后回到出发点的所有情况.按最小字典序从小到大输出. 思路: 把所有坐标+220,保证其是正数,然后搜索 ...

  6. 运行C++程序是出现错误:cannot open Debug/1.exe for writing

    今天,打开VC6.0环境编了个小程序,谁知给我报了“cannot open Debug/1.exe for writing”这样一个错,然后,我就纳闷了,这是什么错丫? 想了半天,后想通,为什么会这样 ...

  7. c语言第四次作业

    (一)改错题 输出三角形的面积和周长,输入三角形的三条边a.b.c,如果能构成一个三角形,输出面积area和周长perimeter(保留2位小数):否则,输出"These sides do ...

  8. Fabrik – 在浏览器中协作构建,可视化,设计神经网络

    Fabrik是一个在线协作平台,通过简单的拖放界面来构建,可视化和训练深度学习模型. 它允许研究人员使用Web GUI协同开发和调试模型,该GUI支持导入,编辑和导出广泛流行的框架(如Caffe,Ke ...

  9. iOS 隐藏导航条分割线

    // 导航条分割线 @property (nonatomic, strong) UIView *navSeparateView; // 获取导航条分割线 UIView *backgroundView ...

  10. jquery 数组操作 $.unique() $.inArray()

    1.去除重复 $.unique() $.unique() 去掉重复的元素 注意 : 执行unique之前,要先调用sort对数组的内容进行排序. <script src="http:/ ...