QT 定时关机、共享内存、启动浏览器、浏览器前进后退刷新、进度条、设置浏览器标题、QML入门

版权声明:墨痕诉清风 https://blog.csdn.net/u012206617/article/details/88411893

定时关机

.h
#include <QTimer>
#include <stdlib.h>
#include <QByteArray>


//构造函数
//system("shutdown -s -t 7200");
QString cmd = :shutdown -s -t:
cmd+= .....
system(cmd.toAssic().data());

QTimer *timer = new QTimer;
connect(timer, SIGNAL(timeout()), this, SLOT(close()));
timer-start(5*1000);

共享内存

.h
#include <QShareMemory>
#include <QFileDialog>
#include <QPixmap>
#include <QBuffer>
#include <QDataStream> 

QShareMemory *memory;



void MainWindow::loadFromFileSlot()
{
    //判断当前进程是u否存在共享内存
    if (this->memory->isAttached())
        this->memory->detach();  //删除

    QString fileName = QFileDialog::openFileName(this, "Open Image", QString(), tr("Image(*.png,*.bmp,*.jpg)"));

    //QImage load方法将y一个图片文件的名称加载图片对象当中
    QImage image;
    if (!Image.load(fileName))
    {
        return;
    }

    //QBuffer 他是一个文件读写的界面,但是文件是在内存当中
    //QTextStream in()
    QBuffer buffer;  //既然是一个文件 就可以对他进行读写
    bool ok = buffer.open(QIODivice::ReadWrite);
    if (ok)
    {
        QTextStream in(&buffer);
        in << image;

        int size = buffer.size();           //获取写入数据的大小(图片的大小)
        qDebug()<<"缓冲区的大小为:"<<size;
        qDebug()<<sharememory->key();
        qDebug()<<sharememory->nativeKey();
        //sharememory->setKey("共享内存");   //修改共享内存的关键字,将无法访问共享内存
        qDebug()<<sharememory->key();
        qDebug()<<sharememory->nativeKey();
        qDebug()<<sharememory->error();
        qDebug()<<sharememory->errorString();
    else
    {
        return;
    }
}

void MainWindow::loadFormMemorySlot()
{
     if (!sharememory->attach())     //关联共享内存
     {
         ui->Label_Display->setText("无法关联共享内存");
         return;
     }
     QBuffer buffer;                //构建缓冲区
     QDataStream out(&buffer);      //建立数据流对象,并和缓冲区关联
     QImage image;
     //对共享内存进行读写操作
     sharememory->lock();           //锁定共享内存
     //初始化缓冲区中的数据,setData函数用来初始化缓冲区。
     //该函数如果在open()函数之后被调用,则不起任何作用。
     //buffer.open(QBuffer::ReadOnly);  //解除注释,则setData函数不起作用,无法加载内存中数据
     buffer.setData((char*)sharememory->constData(), sharememory->size());
     buffer.open(QBuffer::ReadOnly);    //只读方式打开缓冲区
     out >> image;                      //将缓冲区的数据写入QImage对象
     sharememory->unlock();         //释放共享内存
     sharememory->detach();         //解除程序和共享内存的关联
     ui->Label_Display->setPixmap(QPixmap::fromImage(image));   //显示图片
}

启动浏览器

#include <QtWebKit/QtWebKit>
#include <QtWebKit/QWebView>
#include <QUrl>

void MainWindow::on_showButton_clickedO()
{
    QWebView *view = new QWebView;
    view->load(QUrl("http://www.zhaoyun.com"));
    view->show();
}

浏览器前进后退刷新

QObject::connect(ui->linEdit, SIGNAL(returnPressed(), this, SLOT(AAA())));

void AAA()
{
    ui->webView->load(QUrl(ui->lineEdit->text()));
}

进度条

#include <QProcessBar>

.h
QProcessBar *progress;


//构造函数
this->progress = new QProcessBar;
ui->statusBar->addWidget(this->progress);
QObject::connect(ui->webView, SIGNAL(urlChanged(Qurl), this->progress, SLOT(setValue(int))));
QObject::connect(ui->webView, SIGNAL(loadFinished(bool), this->progress, SLOT(deleteProcessBarSlot(bool))));

//销毁进度条
void MainWindow::deleteProcessBarSlot(bool ok)
{
    if (ok)
    {
        delete this->progress;
        this->progress = NULL;
        this->ui->statusBar->showMessgae("Load Finished", 5*1000);
    }
}

设置浏览器标题

OBject::connect(ui->webView, SIGNAL(titleChanged(QString)), this, SLOT(setTitleSlot(QString)));

void MainWindow::setTitleSlot(QString str)
{
    this->setWindowTitle(str);
}

QML入门

import QtQuick 1.1

Rectangle {
    width: 360
    height: 360
    color:"green"
    Text {
        text: qsTr("Hello World")
        color:"red"
        anchors.centerIn: parent
    }
    MouseArea {
        anchors.fill: parent
        onClicked: {
            Qt.quit();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/u012206617/article/details/88411893