将QT里的.ui生成.h文件,并在.cpp中对.ui中的控件写事件及支持中文

时间:2022-06-14 12:55:03

更多精彩内容,请见:http://www.16boke.com


by zxy,Java/C++编程交流群QQ:168424095

在上一篇文章的基础上:
(1)双击mainwindow.ui,在窗体中增加一个pushButton保存
(2)开始->运行->输入cmd回车,cd到.ui所在的位置:C:\Qt\qtcreator-2.5.0\gui\gui输入
uic -o temp.h mainwindow.ui 可以看到C:\Qt\qtcreator-2.5.0\gui\gui文件夹下多了一个temp.h文件
将此temp.h的内容替换C:\Qt\qtcreator-2.5.0\gui\gui-build-desktop-Qt_4_8_1__qmake____中ui_mainwindow.h中的内容
(3)用信号槽来处理
mainwindow.h中增加对事件槽的声明:
class MainWindow : public QMainWindow
{
    Q_OBJECT
   
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
   
private:
    Ui::MainWindow *ui;
private slots:
    void on_pushButton_clicked();
};

对于click点击事件,qt中硬性规定为 on_控件ID_clicked();
例如ID为pushButton的button控件,我们只用在class的head里面写
prvate slots:
void on_pushButton_clicked();

mainwindow.cpp中增加 #include <QMessageBox>
void MainWindow::on_pushButton_clicked()
{
    QMessageBox::information(this,tr("提示"),tr("点击了pushButton"));
}

支持中文修改main.cpp
#include <QApplication>
#include "mainwindow.h"
#include <QTextCodec>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    //设置中文开始
    QTextCodec *codec = QTextCodec::codecForName("System");    //获取系统编码
    QTextCodec::setCodecForLocale(codec);
    QTextCodec::setCodecForCStrings(codec);
    QTextCodec::setCodecForTr(codec);
    w.show();
   
    return a.exec();
}


更多精彩内容,请见:http://www.16boke.com