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. allocator

    allocator: 通常c++内存配置和释放操作是这样的: class Fo{}; Fo *p = new Fo; delete p; new算式主要有三个阶段: 调用::operator new配 ...

  2. 51nod 1770 数数字

    1770 数数字 基准时间限制:1 秒 空间限制:262144 KB 分值: 20 难度:3级算法题  收藏  关注 统计一下 aaa ⋯ aaan个a × b 的结果里面 ...

  3. 51Nod 1331 狭窄的通道

    有一个长为L的狭窄通道,我们假设这个通道在x轴上,其两个出口分别在x=0与x=L处.在这个通道里有N只狼,第i只狼有一个初始位置ai,它想到达位置bi(0<=i=L处空间足够大可以装下任意数量的 ...

  4. hdu 4052 线段树扫描线、奇特处理

    Adding New Machine Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  5. [Noi2015]荷马史诗

    来自FallDream的博客,未经允许,请勿转载,谢谢. 追逐影子的人,自己就是影子. ——荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的 ...

  6. APIO2017 懵逼记

    Day -1: 移步http://www.cnblogs.com/juruolty/p/6854795.html Day 0: CTSC铁牌后,下一个就是APIO了. lmy,sxy,cxc,lh过来 ...

  7. Python IDLE背景主题

    相信刚进入python学习之路的朋友们,都还是挺喜欢python自带的IDLE,但是白的代码背景色以及其它的代码色确实让人看着有点不舒服,所以当时也琢磨着能不能自己给它换换颜色,这个当然可以,废话不多 ...

  8. 位运算n & (n-1)的妙用

    本文转自:http://blog.csdn.net/zheng0518/article/details/8882394 按位与的知识 n&(n-1)作用:将n的二进制表示中的最低位为1的改为0 ...

  9. VUE相关资料合集

    ===官方=== https://github.com/vuejs/vue vue-components组件库 ---PC端--- https://github.com/ElemeFE/element ...

  10. 从头开始搭建一个VSCode+NetCore的项目

    看这个前,先要对VS开发C#有所了解 获取作案工具 NetCore SDK https://www.microsoft.com/net/learn/get-started/windows 安装 建立工 ...