qt做的代码计算器

来源:互联网 发布:j2ee怎么更新到java 编辑:程序博客网 时间:2024/05/30 04:56
工程配置文件
#-------------------------------------------------
#
# Project created by QtCreator 2015-04-03T12:44:12
#
#-------------------------------------------------
QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = untitled4
TEMPLATE = app
SOURCES += main.cpp\
        mywidget.cpp
HEADERS  += mywidget.h
FORMS    += mywidget.ui
头文件
#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <iostream>
#include <QWidget>
#include <QWizard>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
    Q_OBJECT
public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
private slots:
    void on_pushButton_5_clicked();
 void readFile(const char* filename);
private:
    Ui::Widget *ui;
};
#endif // MYWIDGET_H
实现文件
#include "mywidget.h"
#include "ui_mywidget.h"
#include <QDebug>
#include <QFileDialog>
#include <QMessageBox>
#include <string>
#include <iostream>
#include <fstream>
#include <QString>
using namespace std;
Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
}
Widget::~Widget()
{
    delete ui;
}
// 文件对话框
void  Widget::on_pushButton_5_clicked()
{
    QStringList fileNames = QFileDialog::getOpenFileNames(this,tr("文件对话框"),
                                                "F:",tr("文本文件(*txt)"));
    qDebug()<< "fileNames:"<< fileNames;
    readFile(fileNames[0].toStdString().c_str());
}
void Widget::readFile(const char *filename)
{
    string temp;
    string anntemp = "";
    int totalLinNum = 0;
    int headFileNum = 0;
    int annotateNum = 0;
    int blankNum = 0;
    ifstream in(filename);
    while(getline(in,temp)){
        totalLinNum++;
        anntemp.append(temp.c_str());
        anntemp.append("\r\n");
        if(!temp.find("#")){
            headFileNum++;
        }
        if(temp.empty()){
            blankNum++;
        }
    }
    int annindex = 0;
    while(anntemp[annindex]){
        if(anntemp[annindex] == '/' && anntemp[annindex+1] == '/'){
            annotateNum++;
        }
        if(anntemp[annindex] == '/' && anntemp[annindex+1] == '*'){
            annindex+=2;
            annotateNum++;
            while(anntemp[annindex] && anntemp[annindex] != '*' && anntemp[annindex] != '/'){
                if(anntemp[annindex] == '\n'){
                    annotateNum++;
                }
                annindex++;
            }
        }
         annindex++;
    }   
    QMessageBox::information(this,tr("注释行数:"),
                             //qstring转换成char*
                             tr(QString("%1").arg(annotateNum).toLatin1().data()),
                                        QMessageBox::Ok);
    QMessageBox::information(this,tr("代码总行数:"),
                                            tr(QString("%1").arg(totalLinNum).toLatin1().data()),
                                            QMessageBox::Ok);
    QMessageBox::information(this,tr("包含的头文件数:"),
                                            tr(QString("%1").arg(headFileNum).toLatin1().data()),
                                            QMessageBox::Ok);
    QMessageBox::information(this,tr("空白的行数:"),
                                            tr(QString("%1").arg(blankNum).toLatin1().data()),
                                            QMessageBox::Ok);
    qDebug()<<"注释行数:"<< annotateNum;
    qDebug()<<"代码总行数:"<<totalLinNum;
    qDebug()<<"包含的头文件数:"<<headFileNum;
    qDebug()<<"空白的行数:"<<blankNum;
}
主文件
#include "mywidget.h"
#include <QApplication>
#include <QTextCodec> //添加头文件
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); //使程序中可以使用中文
    Widget w;
    w.show();
    return a.exec();
}
布局文件
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Widget</class>
 <widget class="QWidget" name="Widget">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>400</width>
    <height>300</height>
   </rect>
  </property>
  <property name="windowTitle">
   <string>Widget</string>
  </property>
  <widget class="QPushButton" name="pushButton_5">
   <property name="geometry">
    <rect>
     <x>160</x>
     <y>70</y>
     <width>75</width>
     <height>23</height>
    </rect>
   </property>
   <property name="text">
    <string>选择文件</string>
   </property>
  </widget>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections/>
</ui>
                                             
0 0
原创粉丝点击