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. HDU 3341 Lost's revenge AC自动机+dp

    Lost's revenge Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)T ...

  2. hdu 1402 FFT(模板)

    A * B Problem Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  3. delphi弹出信息框大全

    1. 警告信息框 MessageBox(Handle,'警告信息框','警告信息框',MB_ICONWARNING);2.疑问信息框 MessageBox(Handle,'疑问信息框','疑问信息框' ...

  4. RESTful Console Application

    RESTful Console Application Introduction Inspirited by RESTFul architecture, A console application t ...

  5. vue mint-ui 实现省市区街道4级联动(仿淘宝京东收货地址4级联动)

    demo及源码地址 https://github.com/artiely/citypicker 先去下载一个“省份.城市.区县.乡镇” 四级联动数据,然后 引入 import { Picker } f ...

  6. 2018年4月更新70多个公司dnc招聘职位

    2018年4月更新70多个公司dnc招聘职位 请在本页回复,补充dnc招聘信息.公司案例 dnc简介 dnc = .NET Core.dotnet Core简写 dnc是微软新一代主力编程平台,开源. ...

  7. Jenkins执行批处理文件、powershell失败

    今天搭建Jenkins持续集成环境,编译环境是.net core.整理了一些发布的命令配置在Jenkins,问题来了,使用powershell插件运行dotnet restore.dotnet bui ...

  8. KVM 时钟分析

    1. 关于GToffset: KVM的guset时钟为gc0_COUNT 其中:mfc0 gc0_count = c0_COUNT+GToffset vcpu_run 以及 vcpu_reenter的 ...

  9. Android Support库——support annotations

    Android Support库是官方出的支持扩展库,包含了丰富的组件.工具类等,通过在Android SDK Manager中勾选以下两项来获取到. 其中,Android Support Libra ...

  10. Android广播的发送与接收

    Android广播的发送与接收 效果图 广播发送 广播分为有序广播和无序广播 有序广播与无序广播的区别 无序广播:只要是广播接收者指定了接收的事件类型,就可以接收到发送出来的广播消息.不能修改消息. ...