Qt5.6界面设计 + VS2017

在CloudCompare平台下进行开发时,部分子程序需要自己设计界面,年纪大了以免后面忘记,特此记录,

step 1:在Qt Designer 中设计界面,生成*.ui文件;

step 2:在cmd命令窗口中cd到Qt Designer所在的bin文件夹下面;

step 3:在cmd命令窗口中输入  uic[空格]-o[空格]ui_*.h[空格]*.ui,

其中,ui_*.h文件为产生的文件, *.ui文件为step 1中的*.ui文件;

step 4:在VS2017工程中添加*_dialog.h和*_dialog.cpp文件,并建立与界面相对应的响应函数;

step 5:在cmd命令窗口中输入 moc *_dialog.h[空格]-o[空格]moc_*.cpp,

其中,*_dialog.h文件为step 4中自己建立的对话框文件,moc_*.cpp为生成的moc文件。

注意:每次修改ui界面时,都要重复一次以上步骤,

Qt5.6界面设计 + VS2017_第1张图片

若在CloudCompare中新建的插件没有响应,解决方案:

cmd中输入 moc plugin中的qMyplugins.h -o moc_*.cpp,

比如ui界面是这样的

Qt5.6界面设计 + VS2017_第2张图片

贴一下*_dialog.h代码

/*-------------------------------------------_dialog.h-------------------------------------------*/

#ifndef _AUTO_COMPUTE_ALL_DIALOG_H_
#define _AUTO_COMPUTE_ALL_DIALOG_H_

//Qt
#include
#include

#include "ui_mydescriptor.h"

class AutoComputeAllDialog :public QDialog, public Ui::MyDescriptorDialog
{
    Q_OBJECT
public:
    explicit AutoComputeAllDialog(QWidget* parent = 0);

    virtual ~AutoComputeAllDialog() {}


    int Getindex() { return m_index; }

    int GetRadius() { return m_radius; }

    int GetGridSize() { return m_gridsizel; }

    int GetSampling() { return m_sample; }

    double GetRatio() { return m_ratio; }

protected slots:

    //关键点采样算法的序号
    void setValue_index(int);

    //半径
    void SetValue_Radius(int);

    //格网大小
    void SetValue_GridSize(int);

    //采样
    void SetValue_Sampling(int);

    //ratio
    void SetValue_ratio(double);


private:

    int     m_index;//选择的序号
    int    m_radius; //半径
    int    m_gridsizel;; //格网
    int    m_sample; //采样
    double   m_ratio; // 比率

};
#endif

/*----------------------------------*_dialog.cpp---------------------------------------*/

#include "mydescriptor_dialog.h"

#include
#include
#include
#include
#include "qmessagebox.h"

AutoComputeAllDialog::AutoComputeAllDialog(QWidget* parent) : QDialog(parent)
, Ui::MyDescriptorDialog()
{
    setupUi(this);

    //connect(keypointcomboBox,SIGNAL(currentIndexChanged(QString)),this,SLOT(print_s()));
    connect(keypointcomboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(setValue_index(int)));// 关键点算法序号
    connect(radiusspinBox, SIGNAL(valueChanged(int)), this, SLOT(SetValue_Radius(int)));//半径
    connect(gridspinBox, SIGNAL(valueChanged(int)), this, SLOT(SetValue_GridSize(int)));//格网
    connect(samplingspinBox, SIGNAL(valueChanged(int)), this, SLOT(SetValue_Sampling(int)));//采样
    connect(ratiodoubleSpinBox, SIGNAL(valueChanged(double)), this, SLOT(SetValue_ratio(double)));//比率
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));

}

void AutoComputeAllDialog::setValue_index(int value)
{
    m_index = value;
}

void AutoComputeAllDialog::SetValue_Radius(int value)
{
    m_radius = value;
}

void AutoComputeAllDialog::SetValue_GridSize(int value)
{
    m_gridsizel = value;
}

void AutoComputeAllDialog::SetValue_Sampling(int value)
{
    m_sample = value;
}

void AutoComputeAllDialog::SetValue_ratio(double value)
{
    m_ratio = value;
}


 


 

你可能感兴趣的:(CloudCompare,Qt)