当前位置: 首页 > news >正文

博客 建立网站wordpress插件采集

博客 建立网站,wordpress插件采集,南宁定制网站制作网络公司,北京互联网公司招聘文章目录 1、QFile1、打开2、读写3、关闭4、程序5、其它功能 2、多线程1、演示2、锁 3、条件变量和信号量 1、QFile Qt有自己的一套文件体系#xff0c;不过Qt也可以使用C#xff0c;C#xff0c;Linux的文件操作。使用Qt的文件体系和Qt自己的一些类型更好配合。 管理写入读… 文章目录 1、QFile1、打开2、读写3、关闭4、程序5、其它功能 2、多线程1、演示2、锁 3、条件变量和信号量 1、QFile Qt有自己的一套文件体系不过Qt也可以使用CCLinux的文件操作。使用Qt的文件体系和Qt自己的一些类型更好配合。 管理写入读取的就是Qt中的QIODevice类。QProcess相当于是对fork/exec操作进行的封装QTemporaryFile表示临时文件用完就销毁文件也就删除在写大量数据时要先创建一个临时文件将旧文件内容写到临时文件里写完后再删除旧文件这就是QSaveFile的操作。 // 这里的name用绝/相对路径 QFile(const QString name)// 查看文档来查看打开、读写、关闭文件操作接口1、打开 不过实际用的是这个它可以直接拿到之前设置的路径 关于OpenMode 2、读写 QByteArray容易转QString。 3、关闭 关闭时就是在释放文件描述符表中的表项文件描述符表存在上限。 4、程序 // mainwindow.h#include QMainWindow #include QPlainTextEditQT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACEclass MainWindow : public QMainWindow {Q_OBJECTpublic:MainWindow(QWidget *parent nullptr);~MainWindow();void handle1();void handle2();private:Ui::MainWindow *ui;QPlainTextEdit* edit; };// mainwindow.cpp#include QDebug #include QFileDialogMainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) {ui-setupUi(this);this-setWindowTitle(窗口);QMenuBar* menuBar this-menuBar();QMenu* menu new QMenu(文件);menuBar-addMenu(menu);// 形成菜单QAction* action1 new QAction(打开);QAction* action2 new QAction(保存);menu-addAction(action1);menu-addAction(action2);// 指定输入框edit new QPlainTextEdit();QFont font;font.setPixelSize(20);edit-setFont(font);this-setCentralWidget(edit);connect(action1, QAction::triggered, this, MainWindow::handle1); }MainWindow::~MainWindow() {delete ui; }void MainWindow::handle1() {// 弹出打开文件对话框QString path QFileDialog::getOpenFileName(this);// 文件名显示到状态栏QStatusBar* statusBar this-statusBar();statusBar-showMessage(path);// 通过路径构造QFile对象QFile file(path);bool ret file.open(QIODevice::ReadOnly);if (!ret){statusBar-showMessage(path 打开失败);return ;}// 读取文件// 即使返回值是QByteArray, 也可以直接用QString接收// 但前提必须不是二进制文件, 是文本文件QString text file.readAll();file.close();// 读到的内容设置到输入框中edit-setPlainText(text); }void MainWindow::handle2() {QString path QFileDialog::getSaveFileName(this);QStatusBar* statusBar this-statusBar();statusBar-showMessage(path);QFile file(path);bool ret file.open(QFile::WriteOnly);if (!ret){statusBar-showMessage(path 打开失败);return ;}const QString text edit-toPlainText();// 转成QByteArrayfile.write(text.toUtf8());file.close(); }5、其它功能 QFileInfo可以获取到Qt的文件的相关属性。 void Widget::on_pushButton_clicked() {QString path QFileDialog::getOpenFileName(this);QFileInfo fileInfo(path); // 构造QFileInfo对象qDebug() fileInfo.fileName();qDebug() fileInfo.suffix(); }2、多线程 和Linux的多线程本质是一样的。Linux有pthread库C11有std::threadQt也封装了线程库参考了Java的线程库。 创建线程要创建QThread对象并创建一个QThread的子类重写父类的run函数来作为线程的入口函数。 start就是调用系统API来创建线程创建好后自动执行run函数。 1、演示 创建QWidget项目通过线程完成定时器功能。 将intValue属性改为10。 创建新的子类 // thread.h#include QWidget #include QThreadclass Thread : public QThread {Q_OBJECT public:Thread();void run();signals:void notify(); };// widget.h#include QWidget #include thread.hQT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);~Widget();void handle();private:Ui::Widget *ui;Thread thread; };// thread.cpp#include thread.hThread::Thread() {}void Thread::run() {// 由于Qt的线程策略, 不允许多个线程同时修改界面// run实现计时效果// 每过一秒钟, 通过信号槽通知主线程修改界面for(int i 0; i 10; i){sleep(1);emit notify();} }// widget.cpp#include QDebugWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);connect(thread, Thread::notify, this, Widget::handle);thread.start(); }void Widget::handle() {int value ui-lcdNumber-intValue();--value;ui-lcdNumber-display(value); }2、锁 Qt的锁是QMutexlock和unlock方法。 QWidget项目创建继承QThread的类Thread。 // thread.h#include QWidget #include QThreadclass Thread : public QThread {Q_OBJECT public:Thread();// 声明static int num;void run(); };// thread.cpp#include thread.h// 定义 int Thread::num 0;Thread::Thread() {}void Thread::run() {for(int i 0; i 47000; i){num;} }// widget.cpp#include QDebug // widget.h中引入thread.hWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-setupUi(this);Thread t1;Thread t2;t1.start();t2.start();// 线程等待// 如果不等待, 那么除了这两个, Widget这个主线程还在并发执行// t1t2开始了, 但是Widget不停, 那么很快就执行到了打印, 此时结果肯定不大t1.wait();t2.wait();qDebug() Thread::num; }这样肯定不会打印出47000 * 2的数字。 加锁 // thread.h#include QMutexpublic:// 声明static int num;static QMutex mutex;// thread.cpp// 定义 int Thread::num 0; QMutex Thread::mutex;void Thread::run() {for(int i 0; i 47000; i){mutex.lock();num;mutex.unlock();} }Qt中的智能指针是QMutexLockerC 11中则是std::lock_guard。 // thread.cpp#include thread.h #include QMutexLocker// 定义 int Thread::num 0; QMutex Thread::mutex;void Thread::run() {for(int i 0; i 47000; i){QMutexLocker locker(mutex);num;} }Qt还有别的锁 3、条件变量和信号量 QWaitCondition条件变量类有waitwakewakeAll方法 例子 QMutex mutex; QWaitCondition condition;//在等待线程中 mutex.lock();//检查条件是否满足, 若不满足则等待 while (!conditionFullfilled()) {condition.wait(mutex); //等待条件满足并释放锁 }//条件满足后继续执行 //... mutex.unlock();//在改变条件的线程中 mutex.lock();//改变条件 changeCondition(); condition.wakeAll(); //唤醒等待的线程 mutex.unlock();QSemaphore信号量类 QSemaphore semaphore(2); //同时允许两个线程访问共享资源//在需要访问共享资源的线程中 semaphore.acquire(); //尝试获取信号量若已满则阻塞//访问共享资源 //... semaphore.release(); //释放信号量//在另⼀个线程中进行类似操作结束。
http://www.hkea.cn/news/14344596/

相关文章:

  • 企业网站模板下载psd格式郑州网站权重
  • 网站建设的基本特点一个虚拟主机如何做多个网站
  • 罗湖中小网站建设广西建设网是正规网站吗
  • 浙江华洋建设有限公司网站网站换域名怎么做
  • 企业网站设计教程报名网站如何做
  • 检测网站是否被墙企业网站建设合同 百度文库
  • 文化投资的微网站怎么做移动互联网开发心得体会
  • 户外拓展公司网站开发报价单模板怎么做
  • 国外html5网站源码无忧网络网站建设
  • 聊城手机网站建设服务上海工商网站
  • wordpress幻灯片模板seo推广介绍
  • 建设网站设计手机网站页面设计
  • 如何做网站收录代理做网站怎么样
  • 兰州网站优化推广seo关键词排名优化报价
  • 网站服务器用哪个好自助旅游网站开发分析报告
  • 建设网站建站公司想学网页设计报考什么专业
  • 南京网站设计公司济南兴田德润优惠吗做旅游网站一年能挣多少
  • 婚礼工作室网站模板交互式英语网站的构建
  • 上海门户网站建设方案怀化公司网站建设
  • 智能家居型网站开发vi视觉设计案例
  • 备案网站 备注内容接网站建设外包的工作总结
  • 怎样制作一个网站步骤公众号建网站
  • 网站搭建制作元素领域wordpress
  • 太原网站建设技术外包网站制作素材图片
  • 网站开发属于什么资产湖州建设局网站 项目验收流程
  • 开网站挣不挣钱网站建设的颜色值
  • 新网互联 网站上传元气森林的网络营销方式
  • 广州网站建设外包建设推广海棠网站
  • 做公司网站,哪个程序用的多阿里云建站文章搜索
  • 做网站 收费广州新塘网站建设推广公司