QT学习-->熟习控件

学了两天,感觉在QT下用C++写一个入门的程序也没有难度:主要还是学习QT上一些格式化的关键字,各种控件的类库,一些流程性的东西。

不过有时候可能有一些小的细节要注意。

//main.cpp
#include <QApplication>
#include"mywidget.h"
#include <QTextCodec>
int main(int argc,char *argv[])
{
	QApplication app(argc,argv);  //App1
	QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));  //输出中字用 为tr() 做准备

	MyWidget form;
	form.show();  //show 类

	return app.exec();//App1 
}

//mywidget.h

#include "ui_form.h"
#include <QWidget>
#include <QCloseEvent>

class MyWidget:public QWidget,public Ui_Form  // 双继
{
	
	Q_OBJECT   //一个有关connect SIGNAL 和solt.............. 
public:
	MyWidget(QWidget *parent=0); //自定义构造fun

	void closeEvent(QCloseEvent * event);//重写Event xx

public slots:   //........................自定义一些事件用
	void print();  //自定义print
	void myquit();
};

//mywidget.cpp

#include "mywidget.h"
#include <QDebug>
#include <QMessageBox>

MyWidget ::MyWidget(QWidget *parent)
:QWidget(parent) //:
{

	setupUi(this);  //注意 this setupUi() 来自于类Ui_Form,程序自动成功的

	connect(pushButton,SIGNAL(clicked()),this,SLOT(myquit()));  //connect 格式用法
	connect(btn_print,SIGNAL(clicked()),this,SLOT(print()));
	connect(btn_clean,SIGNAL(clicked()),lineEdit,SLOT(clear()));

}
void MyWidget::print()
{
	if(lineEdit->text()=="")
	{
		QMessageBox::critical(this,tr("错误"),tr("你输入的内容不能为空")); //QMessageBox 
	}
	else
	qDebug()<<lineEdit->text();
}
void MyWidget::myquit()
{
	if(QMessageBox::Ok==QMessageBox::question(this,tr("conf"),"Are you Quit?",QMessageBox::Ok|QMessageBox::Cancel))
	qApp->quit();
}
void MyWidget::closeEvent(QCloseEvent *event)
{

	if(QMessageBox::Ok==QMessageBox::question(this,tr("conf"),"Are you Quit?",QMessageBox::Ok | QMessageBox::Cancel))
	{
		event->accept();  //这是一个格式,if 条件可以自己写
	}
	else
	{
		event->ignore();
	}
}


下面这两个文件我们一般自己不修改,直接在Qt_creat 生成。。。也就是我们自己拉了几个控件,把位置放好就ok了

// form.ui      ------这个文件是由系统生成的
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Form</class>
 <widget class="QWidget" name="Form">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>535</width>
    <height>326</height>
   </rect>
  </property>
 。。。。。。。。。。


//  ui_form.h
/********************************************************************************
** Form generated from reading ui file 'form.ui'
**
** Created: Wed Jun 13 15:44:11 2012
**      by: Qt User Interface Compiler version 4.5.3
**
** WARNING! All changes made in this file will be lost when recompiling ui file!
********************************************************************************/

#ifndef UI_FORM_H
#define UI_FORM_H

#include <QtCore/QVariant>
#include <QtGui/QAction>
#include <QtGui/QApplication>
#include <QtGui/QButtonGroup>
#include <QtGui/QHeaderView>
#include <QtGui/QLCDNumber>
#include <QtGui/QLineEdit>
#include <QtGui/QPushButton>
#include <QtGui/QWidget>

QT_BEGIN_NAMESPACE

class Ui_Form
{
public:
    QPushButton *pushButton;
    QLCDNumber *lcdNumber;
    QLineEdit *lineEdit;
    QPushButton *btn_print;
    QPushButton *btn_clean;

    void setupUi(QWidget *Form)
    {
        if (Form->objectName().isEmpty())
            Form->setObjectName(QString::fromUtf8("Form"));
        Form->resize(535, 326);
        pushButton = new QPushButton(Form);
        pushButton->setObjectName(QString::fromUtf8("pushButton"));
        pushButton->setGeometry(QRect(9, 9, 85, 27));
        pushButton->setAutoExclusive(false);
        lcdNumber = new QLCDNumber(Form);
        lcdNumber->setObjectName(QString::fromUtf8("lcdNumber"));
        lcdNumber->setGeometry(QRect(9, 72, 64, 23));
        lineEdit = new QLineEdit(Form);
        lineEdit->setObjectName(QString::fromUtf8("lineEdit"));
        lineEdit->setGeometry(QRect(60, 110, 191, 23));
        lineEdit->setEchoMode(QLineEdit::Password);
        btn_print = new QPushButton(Form);
        btn_print->setObjectName(QString::fromUtf8("btn_print"));
        btn_print->setGeometry(QRect(60, 160, 88, 27));
        btn_clean = new QPushButton(Form);
        btn_clean->setObjectName(QString::fromUtf8("btn_clean"));
        btn_clean->setGeometry(QRect(200, 160, 88, 27));

        retranslateUi(Form);

        QMetaObject::connectSlotsByName(Form);
    } // setupUi

    void retranslateUi(QWidget *Form)
    {
        Form->setWindowTitle(QApplication::translate("Form", "Form", 0, QApplication::UnicodeUTF8));
        pushButton->setText(QApplication::translate("Form", "\351\200\200\345\207\272", 0, QApplication::UnicodeUTF8));
        lineEdit->setText(QString());
        btn_print->setText(QApplication::translate("Form", "\346\211\223\345\215\260", 0, QApplication::UnicodeUTF8));
        btn_clean->setText(QApplication::translate("Form", "\346\270\205\351\231\244", 0, QApplication::UnicodeUTF8));
        Q_UNUSED(Form);
    } // retranslateUi

};

namespace Ui {
    class Form: public Ui_Form {};
} // namespace Ui

QT_END_NAMESPACE

#endif // UI_FORM_H


一般自己改完后要:

qmake -project

qmake

make

注意有时候我们重新改完代码,要重新 make clean 一下,按照以上三步,在自动生成ui_form.h和form.ui两文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值