在QT的应用中,不可避免需要使用QtDesigner,创建的ui如何调用呢,这里给出我的调用方法。

 所有设计做完后,保存ui文件,终端输入:

uic -o ui.h ui.ui

得到ui.h文件,新建mainwindow.h文件,输入:

#ifndef __MAINWINDOW_H__

#define __MAINWINDOW_H__

#pragma once

#include

#include

#include

class MainWindow : public QMainWindow,

public Ui::MainWindow_ui

{

Q_OBJECT

public:

MainWindow(QMainWindow *parent = 0);

~MainWindow();

};

#endif // end of __MAINWINDOW_H__

新建mainwindow.cpp文件,输入:

#include "mainwindow.h"

#include "map.h"

MainWindow::MainWindow(QMainWindow*parent)

: QMainWindow(parent),

ui(new Ui::MainWindow_ui)

{

ui->setupUi(this);

}

MainWindow::~MainWindow()

{

delete ui;

}

新建main.cpp文件,输入:

#include

#include

#include

#include "mainwindow.h"

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

{

QApplication app(argc,argv);

MainWindow win;

win.setWindowTitle("CAR-MAP SYSTEM");

//win.resize(2000,1600);//设置窗口大小

win.show();

app.installEventFilter(&win);

app.exec();

return 0;

}

编译即可,编译需要编写pro文件。

除此之外,我们经常会用到槽函数(SLOT)和信号(SINGNAL),但如果之定义了主控件,是无法自定义子控件的槽函数和信号的,解决这一点的办法就是提升控件。打开QTDesinger,选择需要提升的控件,选择提升并填写提升后的名字

 

 所有设计做完后,保存ui文件,终端输入:

uic -o ui.h ui.ui

生成头文件后发现ui.h中引用了提升的控件的头函数,like this:

 此时,我们需要自己编写相应的.h和.cpp文件,以此为例,新建mapwidget.h,输入:

#ifndef MAPWEIDGIT_H

#define MAPWEIDGIT_H

#include

#include

class MapWidget : public QWidget

{

Q_OBJECT

protected:

void paintEvent(QPaintEvent *event);

//void keyPressEvent(QKeyEvent *event);

public:

MapWidget(QWidget *parent = 0);

public slots:

void draw_map();

void draw_car();

void start_move();

void stop_move();

private:

QImage *m_img;

};

#endif

其中,void draw_map();void draw_car(); void start_move();void stop_move();是我自定义的头文件。

新建mapwidget.cpp文件,输入:

#include "mapwidget.h"

#include

#include "mainwindow.h"

#include "map.h"

MapWidget::MapWidget(QWidget *parent)

:QWidget(parent)

{

int imgW = 2000, imgH = 1600;

m_img = new QImage(imgW, imgH, QImage::Format_RGB888);

m_img->fill(QColor(0xff, 0xff, 0xff));

setBackgroundRole(QPalette::Base);

setAutoFillBackground(true);

setFocus();

}

void MapWidget::paintEvent(QPaintEvent * )

{

QPainter painter(this);

// 画在m_img上

painter.drawImage(QPoint(0, 0), *m_img);

}

void MapWidget::draw_map()

{

//编写槽函数

}

pro文件如下:

TEMPLATE = app

CONFIG += qt

QT += gui widgets core

TARGET = sutdy_1

SOURCES += \

./map.cpp\

./mainwindow.cpp \

./camerawidget.cpp\

./mapwidget.cpp\

./main.cpp

HEADERS += \

./map.h\

./camerawidget.h\

./mapwidget.h\

./ui2.h\

./mainwindow.h

最终效果如下:

 

 

参考文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: