zoukankan      html  css  js  c++  java
  • Qt_File基本操作

    #include "menu_test.h"
    #include "time.h"

    Menu_Test::Menu_Test(QWidget *parent)
    : QMainWindow(parent)
    {
    ui.setupUi(this);
    connect(ui.action_O, SIGNAL(triggered()), this, SLOT(openFileDialog()));
    connect(ui.action_F, SIGNAL(triggered()), this, SLOT(changeFontDialg()));
    connect(ui.action_C, SIGNAL(triggered()), this, SLOT(changeFontColor()));
    connect(ui.action_A, SIGNAL(triggered()), this, SLOT(aboutIt()));
    connect(ui.action_S, SIGNAL(triggered()), this, SLOT(saveFileName()));
    connect(ui.action_J, SIGNAL(triggered()),this,SLOT(screenShot()));
    m_txtCode = QTextCodec::codecForName("GBK");
    m_reslut = new QString;
    m_timer = new QTimer();
    m_timer->setInterval(1000);
    m_timer->start();
    connect(m_timer, SIGNAL(timeout()), this, SLOT(onTimerOut()));
    connect(ui.action_P, SIGNAL(triggered()), this, SLOT(openGraphics()));

    m_image = new QImage();
    m_index = 1;
    for (int i = 0; i < 5; i++)
    {
    m_index = rand() % 10;
    qDebug() << m_index;
    }
    }

    Menu_Test::~Menu_Test()
    {
    QMessageBox::StandardButton rb = QMessageBox::question(NULL, "Show Qt", "Do you want to show Qt dialog?", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
    if (rb == QMessageBox::Yes)
    {
    QMessageBox::aboutQt(NULL, "About Qt");
    }
    else
    {
    QMessageBox::information(this, "Title", "You are clever!");
    }
    }
    void Menu_Test::openFileDialog()
    {
    QString file_name = QFileDialog::getOpenFileName(this, "OpenFile", "/", m_txtCode->toUnicode("文本文件(*.txt);C++文件(*.cpp)"), 0);
    if (!file_name.isEmpty())
    {
    QMessageBox::information(this, "Tip", "Open File");
    setWindowTitle(file_name);
    QFile file(file_name);
    if (!file.open(QIODevice::ReadOnly|QIODevice::Text))
    {
    return;
    }
    QTextStream stream(&file);
    QString line_in;
    while (!stream.atEnd())
    {
    line_in = stream.readLine();
    m_reslut->append(line_in + " ");
    }
    ui.textEdit->setText(*m_reslut);
    }
    else
    {
    qDebug() << "File Name is empty";
    }
    }
    void Menu_Test::changeFontDialg()
    {
    bool ok;
    const QFont& font = QFontDialog::getFont(&ok,
    ui.textEdit->font(),
    this,
    tr("fontDialog"));
    if (ok)
    {
    ui.textEdit->setFont(font);
    }
    QTextCursor cur = ui.textEdit->textCursor();//返回当前光标对象
    cur.setPosition(2, QTextCursor::MoveAnchor);//移到起始位置
    cur.movePosition(QTextCursor::NoMove, QTextCursor::KeepAnchor, 3);//移动结束位置
    cur.select(QTextCursor::WordUnderCursor);//选择
    ui.textEdit->setTextCursor(cur);
    }
    void Menu_Test::changeFontColor()
    {
    QPalette palette = ui.textEdit->palette();
    const QColor & color =QColorDialog::getColor(palette.color(QPalette::Base), this);
    if (color.isValid())
    {
    palette.setColor(QPalette::Window, Qt::lightGray);
    palette.setColor(QPalette::Text, color);
    ui.textEdit->setPalette(palette);
    }
    }
    void Menu_Test::aboutIt()
    {
    QDialog* dig = new QDialog;
    dig->setWindowTitle(QString("About This It.."));
    QMessageBox message(QMessageBox::NoIcon, "Title","this is butterfly");
    QDir *dir = new QDir;
    QString path=dir->currentPath();
    message.setIconPixmap(QPixmap("1.png")); //像素映射
    message.exec();
    dig->exec();
    }
    void Menu_Test::saveFileName()
    {
    //QFileDialog提供的始终是Qt自己绘制的对话框
    QFileDialog* saveFileDialog = new QFileDialog(this);
    QString* fileName = new QString();
    //if (saveFileDialog->exec())
    *fileName = saveFileDialog->getSaveFileName();
    saveFileDialog->setWindowTitle(QString("Save File"));
    saveFileDialog->setFileMode(QFileDialog::AnyFile);
    saveFileDialog->setNameFilter(tr("file (*.cpp *.c *.txt)"));
    if (fileName->size() > 0)
    {
    QFile *file = new QFile();
    file->setFileName(*fileName + ".txt");
    file->open(QIODevice::WriteOnly | QIODevice::Text);
    QString s = ui.textEdit->toPlainText();
    QTime time = QTime::currentTime();
    QDate date = QDate::currentDate();
    file->write("wirte time:" +date.toString(tr("yyyy--MM--dd ")).toLatin1() +time.toString("hh::mm::ss ").toLatin1()+ s.toLatin1());
    file->reset();
    file->close();
    }
    delete fileName;
    fileName = NULL;
    return;
    }
    void Menu_Test::onTimerOut()
    {
    QTime time = QTime::currentTime();
    setWindowTitle(time.toString(("hh:mm:ss")));
    if (m_image != NULL)
    {
    QString temp="/" + QString::number(m_index).append(".png");
    QDir dir;
    QString currentPath = dir.currentPath();
    if (m_image->load(currentPath.append(temp)))
    {
    QGraphicsScene * scene = new QGraphicsScene;
    scene->addPixmap(QPixmap::fromImage(*m_image));
    ui.graphicsView->setScene(scene);
    ui.graphicsView->show();
    }
    m_index++;
    if (m_index>5)
    {
    m_index = 1;
    }
    }
    }
    void Menu_Test::openGraphics()
    {
    QString fileName = QFileDialog::getOpenFileName(
    this, "open image file",
    ".",
    "Image files (*.bmp *.jpg *.pbm *.pgm *.png *.ppm *.xbm *.xpm);;All files (*.*)");
    if (fileName != "")
    {
    if (m_image->load(fileName))
    {
    QGraphicsScene *scene = new QGraphicsScene;
    scene->addPixmap(QPixmap::fromImage(*m_image));
    ui.graphicsView->setScene(scene);
    //ui.graphicsView->resize(m_image->width() + 10, m_image->height() + 10);
    ui.graphicsView->show();
    }
    }
    }
    void Menu_Test::screenShot()
    {
    QScreen *screen = QGuiApplication::primaryScreen();
    QDateTime dt = QDateTime::currentDateTime();
    QString filename = dt.toString("yyyyMMddhhmmss") + ".jpg";
    screen->grabWindow(0).save(filename);
    QMessageBox::information(this, "Title", "Save succeed");

    QRegExp rx("(d+)");
    QString str = "Offsets: 12 14 99 231 7";
    QStringList list;
    int pos = 0;

    while ((pos = rx.indexIn(str, pos)) != -1)
    {
    list << rx.cap(1);
    pos += rx.matchedLength();
    qDebug() << list;
    }
    }
    void Menu_Test::keyPressEvent(QObject* object, QEvent* event)
    {
    QKeyEvent* keyEvent;
    if (event->type() == QEvent::KeyPress)
    {
    keyEvent = static_cast<QKeyEvent*>(event);
    switch (keyEvent->key())
    {
    case Qt::Key_A:
    qDebug() << "A";
    break;
    case Qt::Key_Up:
    qDebug() << "Key_Up";
    break;
    case Qt::Key_Down:
    qDebug() << "Key_Down";
    break;
    default:
    int e = 0;
    }
    }
    }

    只有不断学习,才可进步。
  • 相关阅读:
    Fiddler使用教程(收藏)
    js类的几种写法
    对js中prototype的理解
    【移动端兼容问题研究】javascript事件机制详解(涉及移动兼容)--转
    js加载顺序
    html加载js那些事
    HTTP状态码详解
    JS编码解码
    css绝对定位、相对定位和文档流的那些事
    jQuery事件绑定方法bind、 live、delegate和on的区别
  • 原文地址:https://www.cnblogs.com/onlyforliu/p/5689140.html
Copyright © 2011-2022 走看看