`
mmdev
  • 浏览: 12892261 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

QT(2)Widget的小例子

 
阅读更多

  在上一次我们处理好了QT学习的环境,现在可以安安静静地去学习QT,可以参考http://doc.qt.nokia.com/latest/tutorials.html。下面是step by step,创建我们的第一个QT小程序。

一、搭建一个QT程序

#include <QtGui>

/* In this example, we will test QApplication usage. */
int main(int argc, char *argv[])
{
/* 对于一个使用QT的GUI应用,无论是0个或者N个窗口,必须有一个QApplication的对象,而一个非GUI的QT应用,则使用QCoreApplication。他们之间的继承关系:QApplication -> QCoreApplication -> QObject*/
QApplication app(argc, argv);

// ... 这里是程序的主体,我们在后面慢慢填充之...

return app.exec();
}

  创建一个QAppcliation对象,可以将命令行的参数传递过去。QApplication::exec()将唤起QT事件loop,这也是我们在main最后调用的函数。

二、创建一个窗口Windows

#include <QtGui>

/* In this example, we will test QApplication usage. */

int main(int argc, char *argv[])
{

QApplication app(argc, argv);
//如果一个widget创建是没有parent,这样将作为一个window或者一个top-level widget
QWidget window;

// Test 1: 显示Window,对于设置resize的情况,在MeeGo Handset IA32模拟器中是不生效的,Handset中认为所有的windows都是满屏,后面我将视这个window为panel,在上面加上其他组件。
window.resize(240,120);
window.setWindowTitle("Test 1: Show Windows");
window.show();

return app.exec();
}

三、在Windows上加载Widget

#include <QtGui>

/* In this example, we will test QApplication usage. */

int main(int argc, char *argv[])
{

QApplication app(argc, argv);
QWidget window;

window.setWindowTitle("Test 2: Child Widgets");
window.show();


//我们采用QPushButton为例子:和不带parent创建windows不一样,button是一个windows的child,当windows destroy时,也将会被删除。注意隐藏和关闭windows是不会导致windows destroy的,但是程序结束可以。
QPushButton * button = new QPushButton("Hello,world!",&window);
button -> move(100,100); //指定button的精确位置
button -> show();

return app.exec();
}

四、采用layout加载Widget

  一般而言,在程序中,很少直接采用指定精确位置,一般layout的方式。

#include <QtGui>

/* In this example, we will test QApplication usage. */
int main(int argc, char *argv[])

{

QApplication app(argc, argv);
QWidget window;

window.setWindowTitle("Test 3: Using Layouts");
window.show();

//通常,子widget通过一个layout的对象进行排版,而不是直接精确地指定位置或者大小。这里我们采用QLable和输入框为例子,在创建的过程中,没有作为windows的子widget。
QLabel * label = new QLabel("Name:");
QLineEdit * lineEdit = new QLineEdit ();
QHBoxLayout * layout = new QHBoxLayout();

//Layout对象将管理在其上面的widget的位置和大小,通过addWidget()将widget加上。QHBBoxLayout的H表示水平方向。.
layout->addWidget(label);
layout->addWidget(lineEdit);

//而layout本身加入window通过调用setLayout()。windows加入layout后,则layout上的widget成为window的子widget.
window.setLayout(layout);

return app.exec();
}

五、多层次layout(同时演示QDebug和QList的使用方法)

#include <QtGui>
#include <QDebug> //QDebug是很重要的,可以打印QString(不能使用printf)

/* In this example, we will test QApplication usage. */
int main(int argc, char *argv[])
{

QApplication app(argc, argv);
QWidget window;

window.setWindowTitle("Test 4: Nested Layouts");
window.show();


//layout有QHBoxLayout和QVBoxLayout,分别是横向或者纵向。此外Qt还提供比较复杂的QGridLayout和QFormLayout。
QLabel * label = new QLabel("Name:");
QLineEdit * lineEdit = new QLineEdit ();

QTableView * resultView = new QTableView();

//上面的layout放置一个输入框,如同上一个例子。
QHBoxLayout * layout = new QHBoxLayout();
layout->addWidget(label);
layout->addWidget(lineEdit);

//创建一个纵向的layout,上面放置一个layout(一个输入框),通过addLayout(),下面放一个widget(表格)
QVBoxLayout * mainLayout = new QVBoxLayout();
mainLayout->addLayout(layout);
mainLayout->addWidget(resultView);
window.setLayout(mainLayout);


//下面这一部分,在表格(
QStandardItemModel)中加入内容,并且学习一下QT的一些语句用法,学习QList的使用。QList在内存方对象,这这个例子中,存放QStringList数组。在QT中在一个数组中加入一个entry采用“<<"的方式,如果继续加入,则继续“<<"。在表格中,每行有两个元素,放置在QStringList数组中,采用QStringList << "1" << "2" 。
QStandardItemModel * model = new QStandardItemModel();
model->setHorizontalHeaderLabels(QStringList() << "Name" << "Office");//设置title
QList rows = QList()
<< (QStringList() << "Verne Nilsen" << "123")
<< (QStringList() << "Carlos Tang" << "77")
<< (QStringList() << "David Bradley" << "42")
<< (QStringList() << "Knut Walters" << "25")
<< (QStringList() << "Andrea Jones" << "34");

//从Qlist中取出数据,加入table中。每行使用append(),通过foreach从QList中依此读入元素。由于每个元素是一个QStringList,因此两层嵌套的foreach来获取。
foreach (QStringList row, rows) { //将rows的每个元素读入row
QList items;
printf("---------/n");
//用于对比QDebug的使用方式。
foreach(QString text, row){
qDebug() << "debug : " << text ;
//显示qDebug的用法
items.append(new QStandardItem(text));//在List中加入entry
}
model->appendRow(items);
}

resultView->setModel(model);
resultView->verticalHeader()->hide(); //如果不设置行列的名称,缺省为1,2,3,...,这个可以隐藏这些行列的名称
resultView->horizontalHeader()->setStretchLastSection(true); //将每行最后一个entry,填满空间

return app.exec();
}

相关链接:我的MeeGo/Moblin相关文章

分享到:
评论

相关推荐

    Qt Openglwidget 显示图片纹理贴图

    Qt5.7+VS2015 64位的环境,使用Qt的QOpenglWidget,来显示一张图片,采用GLSL。学习入门挺适合的。在网上找了很久资源,还是自己折腾搞定,特地分享出来。

    qt widget控件拖放示例

    实现qt widget控件的拖放功能,并且有鼠标拖动过程控件截图

    QT5 Widget无边框标题栏和自定义程序启动画面

    QT5 Widget 无边框标题栏和自定义程序启动画面的小例子,可以直接拿来用

    Widget例子

    Widget例子。 本地IP地址的显示,以及自定义按钮。

    qt实现opengl简单例子

    qt实现opengl渲染画面,简单实现,适合初学者参考

    我们选择动画Qt属性的一个主要理由是Qt属性为我们提供了自己动画已存在的类的自由度。尤其是QWidget类(我们也可以把它嵌入到

    让我们看一个小例子:我们选择动画Qt属性的一个主要理由是Qt属性为我们提供了自己动画已存在的类的自由度。尤其是QWidget类(我们也可以把它嵌入到一个QGraphicsView中)具有很多属性表示其bounds,colors等等。让...

    qt 滚动文本源代码

    实现了滚动文本效果的qt源代码。在一个widget上绘制出文本之后,要让文本动起来,就要周期性的向同一方向滚动该widget并重新绘制它。

    qtListwidget控件使用实例

    qtListwidget控件使用实例,供大家学习参考使用,可以在控件中添加和删除文本项

    使用qwtPlot3D实现三维曲线、轨迹绘制的例子

    使用qwtPlot3D实现三维曲线、轨迹绘制的例子,使用qt基于c++开发,可以直接运行,无需额外配置,里面包含了所有需要的库文件和头文件,弄了好久才弄出来的,我没有在网上找到其他的类似的代码,在一些博主和热心人的...

    Qt控件拖拽最简实践

    Qt拖拽的基本实践,从QListWidget上拖动一个Item,拖的过程中绘制矩形框,拖到目标Widget中,创建Button,该Button在Widget内部可随意拖动; 这个例子主要是理解Qt的拖拽事件怎么使用,事件怎么被接受,数据怎么传递

    Qt使用QGraphicsView实现滑动窗体效果

    而QGraphicsView则提供了一个widget来显示QGraphicsScene的内容。所以要想成功构建一个视图,这三个元素缺一不可。 以下是一个QGraphicsView的例子,实现滑动的窗体效果,工具栏和图片均为场景中的Item。

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    2.运行Qt Creator,首先弹出的是欢迎界面,这里可以打开其自带的各种演示 程序。 3.我们用File-&gt;New 菜单来新建工程。 4.这里我们选择Qt4 Gui Application。 5.下面输入工程名和要保存到的文件夹路径。我们这里的...

    qt教程及软件.pdf

    1 qt5.0以上入门基础教程和例子代码 2 相关网络资源 3 Qt开发工具Qtcreator手把手一步一步教你学习 4 既有widget也有qt quick入门例子

    QT 绘图函数

    以上的三个例子都是使用了默认的刷子(Qt::SolidePattern,Qt::DiagCrossPattern,Qt::NoBrush)。在现在的应用程序中,单色填充已经很少使用,渐变色填充开始收到欢迎。渐变是依靠颜色的变化实现两种或者多种颜色...

    QListWidget应用实例

    Qt中工具控件QListWidget的应用例子,有需要的朋友可下载学习。分享快乐。

    基于C++的QT实战代码包

    基于C++的QT实战代码包: 窗口主框架、十二宫格界面、Widget例子、Qt360 界面、树形界面通用图、多种组件界面、Qt个性按钮、List树形列表界面、各种chart图表、网易云音乐界面、Qt(动态数据模拟)曲线。

    tab上画图的例子

    tab上画图的例子

    Android桌面小组件(AppWidget)

    一个最简单的桌面小组件开发实例。点击之后发送广播消息,接收到消息之后更新小组件上的文字。是学习AppWidge类的好例子。

    include的动画机制,能用在QWidget、QGraphicWidget、以及在QML中也有部分应用的模型,这里只是先举,

    Qt的动画机制,能用在QWidget、QGraphicWidget、以及在QML中也有部分应用的模型,这里只是先举两个小的例子,目前也没有太深入研究。 以QPropertyAnimation为例,在Widget类中有另一个m_subWidget子类,点击按钮后,...

    CustomDelegate.rar

    QT中delegate自定义委托的小例子,有注释说明和源码 简单基础部件的委托可以继承QItemDelegate,并使用这些函数的默认实现,委托编辑器可以通过使用小工具来管理编辑过程或直接处理事件来实现。 使用Delegate的原因...

Global site tag (gtag.js) - Google Analytics