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

如何做好网站内容优化北京网站sem、seo

如何做好网站内容优化,北京网站sem、seo,深圳企业网站制作企业,做网站如何自动采集图片//虽然下面一行代码进行widget和ui的窗口关联,但是如果发生窗口大小变化的时候,里面的布局不会随之变化ui->setupUi(this);//通过下面这行代码进行显示说明,让窗口变化时,布局及其子控件随之变化this->setLayout(ui->ver…
//虽然下面一行代码进行widget和ui的窗口关联,但是如果发生窗口大小变化的时候,里面的布局不会随之变化ui->setupUi(this);//通过下面这行代码进行显示说明,让窗口变化时,布局及其子控件随之变化this->setLayout(ui->verticalLayout);

信号与槽

在构造函数中进行信号与槽得绑定 有四种方式

①在ui界面 直接右键选择转到槽 在代码中会自动生成一个函数  

//第一种方式  通过UIDesigner
void Widget::on_pushButton_clicked()
{std:: cout << "pushButtonClicked" << std::endl;
}

②使用connect直接进行编码 

// 第二种方式 QObject::connect(sender,SIGNAL(signal()),receiver,SLOT(slot()));QObject::connect(ui->qbjcon,SIGNAL(clicked()),this,SLOT(on_qbjcon_clickedMyself()));void Widget::on_qbjcon_clickedMyself()
{std:: cout << "qbjconClicked" << std::endl;
}

③ 使用lamda表达式进行编码 这个方式无需再去构造函数

//第三种方式Lamda表达式  QObject::connect(sender,&SIGNAL::signal,[=](){/* lamdda body */});QObject::connect(ui->btnlamda,&QPushButton::clicked,[=](){std:: cout << "btnlamdaClicked" << std::endl;});

④ 

 //第四种方式: Qobject::connect(sender,&Sender::signal,receiver,&Receiver::slot);QObject::connect(ui->btnfor,&QPushButton::clicked,this,&Widget::on_for_clicked);
}void Widget::on_for_clicked()
{std:: cout << "forClicked" << std::endl;
}

自定义信号与槽

signals:void mysignal();void mysignalparams(int value);
private slots:void myslot();void myslotparams(int value);
    connect(this,SIGNAL(mysignal()),this,SLOT(myslot()));  //第一个谁来发 第二个信号 第三个谁来收 第四个槽connect(this,SIGNAL(mysignalparams(int)),this,SLOT(myslotparams(int)));emit mysignal();  //触发信号emit mysignalparams(100);
void Widget::myslot()
{std::cout << "myslot" << std :: endl ;
}void Widget::myslotparams(int value)
{std::cout << "myslotparams" << std :: endl ;std::cout << value << std::endl;
}

QDebug()

QDebug 是QT中用于输出调试信息的一个类,它提供了一种方便的方式来输出文本到标准输出,这对于调试QT应用程序非常有用。

文件选择对话框QFileDialog

QFilelog 开发流程

QString fileName = QFileDialog::getOpenFileName(this,tr("Open File"),"D:/QT/",tr("Images(*.png *.xpm *.jpg)"));     //第二个参数是打开文件  第三个参数是默认打开文件的路径  第四个参数是限制的后缀
qDebug() << fileName;

下面是wigget.cpp文件

#include "widget.h"
#include "ui_widget.h"#include <QFileDialog>
#include <QDebug>
#include <QMessageBox>
#include <QShortcut>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{//虽然下面一行代码进行widget和ui的窗口关联,但是如果发生窗口大小变化的时候,里面的布局不会随之变化ui->setupUi(this);QShortcut *shortcutOpen = new QShortcut(QKeySequence(tr("Ctrl+O", "File|Open")),this);QShortcut *shortcutSave = new QShortcut(QKeySequence(tr("Ctrl+S", "File|Save")),this);QShortcut *shortcutZoomIn = new QShortcut(QKeySequence(tr("Ctrl+Shift+=", "File|Save")),this);QShortcut *shortcutZoomOut = new QShortcut(QKeySequence(tr("Ctrl+Shift+-", "File|Save")),this);connect(shortcutOpen,&QShortcut::activated,[=](){on_btnopen_clicked();});connect(shortcutSave,&QShortcut::activated,[=](){on_btnsave_clicked();});connect(shortcutZoomIn,&QShortcut::activated,[=](){zoomIn();});connect(shortcutZoomOut,&QShortcut::activated,[=](){zoomOut();});//通过下面这行代码进行显示说明,让窗口变化时,布局及其子控件随之变化this->setLayout(ui->verticalLayout);//ui->widgetbottom->setLayout(ui->horizontalLayout);connect(ui->comboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(onCurrentIndexChanged(int)));connect(ui->textEdit,SIGNAL(cursorPositionChanged()),this,SLOT(onCursorPositionchanged()));
}Widget::~Widget()
{delete ui;
}void Widget::zoomIn()
{//获得当前TextEdit的当前字体的信息QFont font=ui->textEdit->font();//获得当前字体的大小int fontSize =font.pointSize();if(fontSize == -1) return;//改变大小,并设置字体大小int newFontSize =fontSize +1;font.setPointSize(newFontSize);ui->textEdit->setFont(font);
}void Widget::zoomOut()
{//获得当前TextEdit的当前字体的信息QFont font=ui->textEdit->font();//获得当前字体的大小int fontSize =font.pointSize();if(fontSize == -1) return;//改变大小,并设置字体大小int newFontSize =fontSize -1;font.setPointSize(newFontSize);ui->textEdit->setFont(font);
}/*打开文件*/
void Widget::on_btnopen_clicked()
{QString fileName = QFileDialog::getOpenFileName(this,tr("Open File"),"D:/QT/",tr("Text(*.txt)"));     //第二个参数是打开文件  第三个参数是默认打开文件的路径  第四个参数是限制的后缀ui->textEdit->clear();  // 再打开之后将现有的文本清空//打开文件file.setFileName(fileName);  //或者 QFile file(); 尽量使用这种方式file.setFileName(D:\Qt\text1.txt);if(!file.open(QIODevice::ReadWrite | QIODevice::Text)){qDebug() << "file open error!" ;}this->setWindowTitle(fileName+" - MyNoteBook");//读取文件QTextStream in(&file);//in.setCodec("UTF-8");//in.setCodec("ANSI");QString str =ui->comboBox->currentText();const char *c_str = str.toStdString().c_str();     //把QString 转化为charin.setCodec(c_str);    //这里面需要char型 因此需要转化  ui->comboBox->currentText() 为QString型//方式1 QString  context = in.read(file.size());//方式2 主要是读取大型的文件while(!in.atEnd()){QString  context =  in.readLine();   //逐行读取//输出文件内容//ui->textEdit->setText(context);  //settext输出有弊端 当文本很多时 很难输出文本ui->textEdit->append(context);   //append能够将现有的读出来 后面的追加}}void Widget::on_btnsave_clicked()
{if(!file.isOpen()){QString fileName = QFileDialog::getSaveFileName(this,tr("Save File"),"D:/QT/untitled.txt",tr("Text(*.txt *.doc)"));     //第二个参数是打开文件  第三个参数是默认打开文件的路径  第四个参数是限制的后缀//1.打开file.setFileName(fileName); //或者 QFile file(); file.setFileName(D:\Qt\text1.txt);if(!file.open(QIODevice::WriteOnly | QIODevice::Text)){qDebug() << "file open error";}this->setWindowTitle(fileName+" - MyNoteBook");}//2.写入QTextStream out(&file);file.seek(0); // 移动到文件头out.setCodec(ui->comboBox->currentText().toStdString().c_str());QString context = ui->textEdit->toPlainText();out << context;}void Widget::on_btnClose_clicked()
{QMessageBox msgBox;  //Qt当中的弹窗int ret = QMessageBox::warning(this, tr("MyNotebook Notice:"),tr("The document has been modified.\n""Do you want to save your changes?"),QMessageBox::Save | QMessageBox::Discard| QMessageBox::Cancel,QMessageBox::Save);switch (ret) {case QMessageBox::Save:// Save was clickedon_btnsave_clicked();qDebug() << "QMessageBox::Save:" ;break;case QMessageBox::Discard:// Don't Save was clickedui->textEdit->clear();file.close();this->setWindowTitle("MyNoteBook");qDebug() << "QMessageBox::Discard:" ;break;case QMessageBox::Cancel:// Cancel was clickedqDebug() << "QMessageBox::Cancel:" ;break;default:// should never be reachedbreak;}}void Widget::onCurrentIndexChanged(int)
{qDebug() << "currentItSigal" ;ui->textEdit->clear();if(file.isOpen()){qDebug() << "file is Open" ;QTextStream in(&file);in.setCodec(ui->comboBox->currentText().toStdString().c_str());    //这里面需要char型 因此需要转化  ui->comboBox->currentText() 为QString型file.seek(0);      //重新让光标回到原处while(!in.atEnd()){QString  context =  in.readLine();   //逐行读取//ui->textEdit->setText(context);  //settext输出有弊端 当文本很多时 很难输出文本ui->textEdit->append(context);   //append能够将现有的读出来 后面的追加}}
}void Widget::onCursorPositionchanged()
{QTextCursor cursor =  ui->textEdit->textCursor();//qDebug() << cursor.blockNumber()+1 <<","<< cursor.columnNumber()+1 ;QString blockNum =QString::number(cursor.blockNumber()+1);QString columNum =QString::number(cursor.columnNumber()+1);const QString labelMes ="L:" +blockNum +",C:"+ columNum+"   ";ui->labelPosition->setText(labelMes);//设置当前行高亮QList<QTextEdit::ExtraSelection>extraSelections;QTextEdit::ExtraSelection ext;//1.知道当前行ext.cursor = ui->textEdit->textCursor();//2.颜色QBrush qBrush(Qt::lightGray);ext.format.setBackground(qBrush);//配置段属性,整行显示ext.format.setProperty(QTextFormat::FullWidthSelection,true);//3.设置//把ext加到ext容器中extraSelections.append(ext);ui->textEdit->setExtraSelections(extraSelections);}

下面是wigget.h文件

#ifndef WIDGET_H
#define WIDGET_H#include <QFile>
#include <QWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:QFile file;Widget(QWidget *parent = nullptr);~Widget();void zoomIn();void zoomOut();private slots:void on_btnopen_clicked();void on_btnsave_clicked();void on_btnClose_clicked();void onCurrentIndexChanged(int index);void onCursorPositionchanged();private:Ui::Widget *ui;
};
#endif // WIDGET_H

最终实现的效果如图

http://www.dtcms.com/wzjs/474405.html

相关文章:

  • 关于公司网站改版通知百度一下首页极简版
  • 电子商务书城网站建设方案他达那非副作用太强了
  • wordpress 移除侧边栏哈尔滨seo网络推广
  • 婴儿衣服做的网站好大数据营销的案例
  • 小说网站快速做排名网络营销主要做些什么
  • 专用主机网站建设外包公司的优势和劣势
  • 高新手机网站建设价格怎么线上推广自己的产品
  • 建网站联系站长之家素材
  • 网站怎么做淘宝客推广软件赚钱
  • 网站上地图是怎样做的网站搜索优化公司
  • 上海企业网站模板建站平台产品线上推广渠道
  • 微信公众号的网站超链接怎么做搜索引擎营销分类
  • 中山市智能h5网站建设公司手机系统优化
  • 重庆时时彩在线网站制作平台如何做推广
  • 020网站开发发布外链的平台有哪些
  • 织梦网站模板如何安装教程seo岗位是什么意思
  • 书城网站建设项目定义济南网站自然优化
  • wordpress排序博客seo教程
  • 网络营销知识网站打开官方网站
  • bootstrap模板网站天眼查询个人
  • 重庆市住房和城乡建设委员会网站音乐接单推广app平台
  • 容桂网站制作值得信赖武汉seo排名
  • 做外贸主页网站用什么的空间好点广州竞价托管
  • 网站制作客户寻找关键词网站推广
  • 自己建网站可以赚钱吗安卓优化大师官网下载
  • 做网店去哪个网站货源好网站外链出售
  • 兰州做网站价格友情链接怎么互换
  • 建设网站怎么创建数据库搜索引擎营销的内容和层次有哪些
  • 网站ip地址向谁购买济南seo顾问
  • 网站信息维护广州网络营销的推广