在上一次我们处理好了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环境中使用QOpenGLWidget显示图片并实现纹理贴图,主要涉及Qt、OpenGL Widget、QImage以及纹理贴图等关键概念。首先,我们需要理解Qt库是一个跨平台的应用程序开发框架,它提供了...
在Qt框架中,Widget控件是构建用户界面的基础元素,它们可以是按钮、文本框、标签等。拖放(Drag and Drop)功能是GUI应用程序中常见的交互方式,允许用户通过鼠标将一个对象从一处移动到另一处。在Qt中,我们可以...
在本文中,我们将深入探讨如何使用Qt框架来实现OpenGL的基本功能,特别关注如何在Qt环境中创建一个OpenGLWidget,展示一个简单的OpenGL渲染实例。Qt是一个强大的跨平台应用开发框架,而OpenGL则是一种广泛应用的图形...
Widget例子。 本地IP地址的显示,以及自定义按钮。
2. **创建ListWidget** - 在Qt Designer(UI设计工具)中,你可以直接拖放ListWidget到你的界面布局中。 - 在代码中,可以通过`QListWidget* listWidget = new QListWidget(parent);`创建一个新的ListWidget实例。...
分别是 QVBoxLayout(垂直布局)、QHBoxLayout(水平布局)、QGridLayout(网格布局)、QFormLayout(表单布局)和 QStackedLayout(分组布局)实战例子 除Qt Designer支持可视化设计和布局界面之外,Qt 提供了代码...
在本文中,我们将深入探讨如何使用Qt库来创建一个简单的放大镜功能,正如"Qt放大镜例子"这个标题所描述的。Qt是一个跨平台的应用程序开发框架,它提供了丰富的图形用户界面(GUI)工具和功能,使开发者能够构建高效...
2. **体积较小**:程序只包含必要的代码,不包括库代码,使得程序体积减小。 3. **共享资源**:多个程序可以共享同一动态库,减少系统资源占用。 4. **版本管理**:易于更新和维护,只需要替换库文件,不影响已编译...
首先,我们看到文件列表中有`widget.ui`,这是一个使用Qt Designer设计的用户界面文件。在Qt Designer中,我们可以拖放QListWidget到布局中,并设置其属性,如大小、样式等。设计完成后,我们需要将UI文件转换为C++...
在这个例子中,`referenceScreenWidth`是你定义的参考分辨率宽度,`scaleFactor`计算了当前分辨率与参考分辨率的比例。然后,对所有子控件应用这个比例来改变它们的大小,同时调整字体大小。 在压缩包中的`Adapter_...
让我们看一个小例子:我们选择动画Qt属性的一个主要理由是Qt属性为我们提供了自己动画已存在的类的自由度。尤其是QWidget类(我们也可以把它嵌入到一个QGraphicsView中)具有很多属性表示其bounds,colors等等。让...
这个例子中,横向表头的第0列被设置为了一个两行的表头,而垂直表头的第0行也有相同的效果。通过调整QHeaderView的resize模式和文本的换行,我们成功地创建了一个复杂的多行表头。 在实际项目中,你可能还需要处理...
2. 为每个要展示的界面创建单独的窗口小部件,并将它们作为子窗口小部件添加到Stack Widget中。 3. 使用`addWidget()`函数将子窗口小部件添加到Stack Widget的堆栈中,每个小部件都会有一个相应的索引。 4. 配置信号...
下面是一个按钮样式的例子: ```cpp QPushButton { background-color: #3498DB; /* 按钮默认颜色 */ color: #FFFFFF; /* 文字颜色 */ border: 1px solid #2980B9; /* 边框颜色和宽度 */ border-radius: 4px; /*...
首先,我们需要理解Qt中的控件(Widget)系统。Qt提供了丰富的控件类,如QLabel、QPushButton、QLineEdit等,这些控件是构建用户界面的基本元素。当用户双击一个控件时,我们通常希望这个行为触发一个编辑模式,允许...
Qt拖拽的基本实践,从QListWidget上拖动一个Item,拖的过程中绘制矩形框,拖到目标Widget中,创建Button,该Button在Widget内部可随意拖动; 这个例子主要是理解Qt的拖拽事件怎么使用,事件怎么被接受,数据怎么传递
在这个例子中,我们创建了一个无边框的窗体(`Qt::FramelessWindowHint`),并且设置了窗体背景为半透明(`Qt::WA_TranslucentBackground`)。 然而,半透明仅仅是第一步,实现不规则形状则需要自定义窗体的形状。...
QT编程是一种广泛应用于桌面应用开发、嵌入式系统和跨平台UI设计的开源框架。它由Qt Company维护,基于C++语言,提供了丰富的API来简化图形用户界面(GUI)的创建和管理。在这个"QT编写的案例"中,我们可以看到一...
在本文中,我们将深入探讨如何使用Qt框架实现抽屉式菜单。Qt是一个强大的跨平台应用程序开发框架,广泛用于创建...对于那些想要学习Qt界面设计或者需要在旧项目中添加抽屉菜单功能的人来说,这个例子是一个宝贵的资源。
`widget.ui`文件是Qt Designer生成的用户界面布局描述,用于构建GUI应用的界面元素。 `MyNetwork.pro`和`MyNetwork.pro.user`是Qt项目的构建文件,`pro`文件定义了项目依赖、编译选项和目标设置,`.user`文件则存储...