位置: IT常识 - 正文

Qt+OpenCV(一)Qt基础操作和使用opencv初识(qt+opencv教程)

编辑:rootadmin
Qt+OpenCV(一)Qt基础操作和使用opencv初识

推荐整理分享Qt+OpenCV(一)Qt基础操作和使用opencv初识(qt+opencv教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:qt opencv mingw,qt opencl,qt和opencv环境搭建,qt和opencv环境搭建,qt opencv mingw,qt+opencv教程,qtcreator opencv,qt+opencv教程,内容如对您有帮助,希望把文章链接给更多的朋友!

        准备开始学习一本新书,名字叫做《OpenCV3和Qt5计算机视觉应用开发》,之前也接触过一些Qt和Opencv应用的例子,不过都不成系统,也比较粗浅,基本上是一边查资料一边临时用上去的,这次学习这本书一方面想补充整理学习到的知识,另一方面也接触学习运用Qt和Opencv组合的计算机视觉方法,说不好会对以后的学习研究有没有帮助,不过倒是可以打发打发这段时间。

        相关的配置在之前的帖子里面已经记录过了,那今天就记录整理一下这本书的第二章内容——创建第一个Qt+OpenCV项目。这一章呢,大概是介绍Qt的一些基础应用,然后有一个Qt+Opencv的比较简单的小项目例子。

        章节的内容比较多,本着只记录一些自己认为比较重要的内容,就简单一些。

目录

1 Qt Creator

1.1 Qt Creator的模式

1.2 Qt Creator的选项窗口

2 OpenCV+Qt的简易项目


1 Qt Creator

        首先比较简单的介绍一下Qt Creator。这是一个由Qt框架创建并为其服务的IDE,简单理解的话,就是可以在这上面创建Qt的项目,当然我们也可以在VS等编译器上使用Qt框架,不过初学的话,我还是比较喜欢轻量开源的Qt Creator的界面风格。以下是它的一些重要特性:

        (1)使用会话管理多个IDE状态

        (2)多个Qt项目管理

        (3)用户界面设计

        (4)代码编辑

        (5)跨平台

        (6)应用程序调试

        (7)上下文相关帮助

        最早接触Qt是大学课程设计时需要做用户界面,然后稍微接触了一些,对上面的一些特性有了一些了解,但是因为本人做事凌乱懒散的特点,其实对于Qt的理解掌握应该可能只在入门的边缘徘徊吧……不过没关系,希望通过后面个人的学习慢慢加深印象,更好地理解掌握Qt的内容。

1.1 Qt Creator的模式

        如图,Qt Creator共有6种模式,见右侧边栏,分别是欢迎、编辑、设计、调试、项目和帮助模式,每一种模式下,主页面都呈现不同的内容,通过点击左侧对应的选项可以切换不同的模式,以下分别阐述欢迎、编辑、设计和帮助模式,其他两种模式留待后续学习。

1.1.1 欢迎模式

        首先是欢迎模式,这是Qt Creator打开后第一个看到的页面即初始模式。该模式下有三个子模式:项目、示例和教程。

        项目子模式可以用于创建新的项目或打开最近的项目,此外session部分可以用于存储和恢复IDE状态,这部分书中没有讨论,就留到以后再学习吧。

         示例子模式和教程子模式比较类似,前者提供很多带注释的例子以供学习,后者包含视频演示与示例,定期浏览教程内容可以及时了解最新特性和使用方法。

 

 1.1.2 编辑模式

        接下来是编辑模式,进行项目开发时将频繁使用到该模式。

        首先看编辑模式下窗体的不同部分,序号①、③是左右两侧的工具条,序号②是主要的代码编写区域。默认情况下,只有左侧工具条可见,但是可以使用屏幕辆车底部的按钮关闭或打开工具条。

        主代码区是一个轻量级的代码编辑器,具备代码完成、代码高亮和上下文相关帮助等功能,当鼠标光标位于代码编辑器的Qt类上时,可以按下F1键查看上下文有关的帮助信息。

        两侧顶部的箭头可以改变工具条的模式,可用的工具条模式有:

         这些模式的内容包括:

项目包含已打开项目及其包含文件的列表打开文档只显示已经打开的文件,可以点击文件旁的“X”手动关闭文件书签显示在代码中所建的书签文件系统文件浏览器,显示工程项目文件夹的所有文件,也可浏览计算机上的其他文件夹类视图查看当前项目中的类层次结构大纲相似当前已打开文件中的所有方法与符号的层次结构测试显示项目中的所有可用测试

类型层次及

Include Hierarchy

查看类层次结构以及所包含头文件的层次结构

1.1.3 设计模式

        接下里是设计模式,与其他模式不同,设计模式并不能通过左侧边栏进行切换,要打开设计模式,首先要打开一个用户界面文件(*.ui),即可以通过双击打开左窗体的mainwindow.ui文件。

Qt+OpenCV(一)Qt基础操作和使用opencv初识(qt+opencv教程)

        设计模式提供用户界面设计器的所有工具,它有一个所见即所得类型的用户界面GUI编辑器,该编辑器可用于对Qt控件实施添加、删除、编辑或编写代码等操作,控件也可以根据需要从用户界面中添加或删除。

        设计模式的界面也可以分为三个部分。中间主要区域可以任意拖放/删除控件、调整控件的大小,是一个可视化编辑用户界面的取悦;左侧是一个可以添加到用户界面的空间列表;右侧可以查看用户界面控件的的分层视图并修改每个控件的属性。

        在中间主体部分的底部,可以看到“Action Editor”和“Signals_Slots Editor”。为了理解它们的工作原理,首先需要了解Qt中信号和槽的概念,简单来说这是一张消息传递的方法,发出信息->槽响应,因为之前接触过,所以就不记录太多了。

        接下里记录一下每个控件的大概作用,其实按我对自己的了解,除了常用的一些,其他大部分的控件作用和使用方法我估计是记不住的,不过没关系,需要的时候能够从书中或者网络查找到也可以,用得多了自然就熟悉了。

布局垂直布局等价Qt类QVBoxLayout,垂直分布水平布局等价Qt类QHBoxLayout,水平分布网格布局等价Qt类QGridLayout,建立具有任意数量的行和列的控件网格表单布局等价Qt类QFormLayout,建立包含一些标签和对应的输入控件的表单状外观间隔符水平间隔符用于在同处一行的两个控件之间插入空白,形似弹簧垂直间隔符用于在同处一列的两个控件之间插入空白,形似弹簧按钮按键按钮最常用的简单按钮,QPushButton工具按钮与按键按钮相似,通常要添加到工具栏中

单选按钮

从众多其定义的选项中选中或取消某个选项,QRadioButton复选框用于启用或禁用选项,QCheckBox命令链接按钮

windows vista样式的命令链接按钮,可以代替向导中的单选按钮

类似于使用单选框选择一个选项,然后在向导对话框点击Next,QCommandLinkButton

对话框按钮让按钮能够在对话框中使用操作系统样式,QDialogButtonBox常见栏菜单栏(QMenuBar)位于窗口顶部的水平朱菜单栏,可以有任意数量的对象元素和子对象元素,每一个对象元素可以触发某个动作(QAction)       唯一工具栏(QToolBar)可移动的窗体,包含与特定任务对应的工具按钮  可以有任意数量状态栏(QStatusBar)位于底部的水平信息栏   唯一 对象元素视图列表视图(List View)简单列表显示, QListView树状视图(Tree View)层次结构的形式显示,QTreeView表格视图(Table View)以具有任意数量的行和列的表格显示,QTableView列视图(Column View)与列表视图类似,还显示模型中存储的层次数据,QColumnView

对象元素控件

列表控件 类似列表视图,但有基于对象元素的API,可用来增加、移除修改其对象元素,QListWidget 树状控件 类似树状视图,但有基于对象元素的API,可用来增加、移除修改其对象元素,QTreeWidget 表格控件 类似列表视图,但有基于对象元素的API,可用来增加、移除修改其对象元素,QTabletWidget

容器组框简单的带标题和边框的分组框,QGroupBox滚动区可滚动的区域,QScrollArea工具箱用于在不同选项卡组或列中对控件分组,每个选项卡可展开其包含的组件,同时隐藏其他选项卡的内容,QToolBox选项卡控件用于在选项卡页面显示不同组的控件,可以通过单击对应的选项卡来切换每个页面或一组控件,QTabWidget堆叠控件类似选项卡控件,但只有一页且一直可见,如果希望把不同的用户界面设计到一页并根据用户的操作切换成不同的页面,这个控件就特别有用,QStackedWidget框架用作所有带框架的控件的占位符,也是所有带框架控件的基类,qframe控件与QWidget类相同,所有Qt空间的基类MDI区域可用于在一个窗口或Qt控件内创建所谓的多文档界面,右键MDI区域可添加新窗口,QMdiAreaQAx控件 QAx Widget用作Active-X控件的封装器,只适用于WIndows用户且依赖一个名为axcontainer的Qt模块,QAXWidget停靠控件 Dock Widget用作特定控件的占位符,可以停靠在一个窗口内部或者移到其外面作为一个独立的顶部窗口,QDockWidget输入控件组合框下拉列表框,QComboBox字体下拉列表框类似下拉列表框,但可选择计算机上的可用字体创建字体列表行编辑器输入和显示一行文本,QLineEdit文本编辑输入和显示多格式文本,实际是成熟的所见即所得格式文本编辑器,QTextEdit纯文本编辑可用于查看和编辑多行文本,可以看作简单的记事本控件,QPlainTextEdit选值框可用于输入一个整数或离散值集合,QSpinBox双精度选值框类似选值框,但可接受双精度值,QDoubleSpinBox时间编辑输入时间值,QTimeEdit日期编辑输入日期值,QDateEdit日期/时间编辑框输入时间值和日期值,QDateTimeEdit表盘与滚动条类似,但形状为圆形的表盘,QDial水平/竖直栏水平或竖直方向的滚动条,QScrollBar水平/垂直滑块输入指定范围内的整数值,QSlider键盘序列编辑可用于输入一个键盘快捷键,QKeySequenceEdit显示控件标签

显示数字、文本、图像、日期等输出数据,QLabel

文本浏览器除增加连接之间的导航外,其余与文本编辑框控件几乎一样,QTextBrowser图形视图用于显示图形场景的内容,QGraphicsView日历控件用于在按月显示的日历中查看和选择日期,QCalendarWidgetLCD数字用于在类似液晶屏的显示器中显示数字,QLCDNumber进度条用于显示垂直的或水平的进度进度指示器,QProgressBar水平线/垂直线用于绘制简单的垂直线或水平线作为分隔符OpenGl控件用作渲染OpenGL输出的一个表面,QOPenGLWidgetQQuickWideget用于显示Qt Quick用户界面,该界面使用QML语言设计用户界面

1.1.4 帮助模式

        帮助模式不仅可以按文字搜索与Qt相关的所有信息,查看每一个类与模块的大量应用示例,可以用它查找每个类所需的正确模块,要做到这一点只需要切换到索引模式进行检索即可。

1.2 Qt Creator的选项窗口

        接下来了解一下Qt Creator的选项窗口。

        在主菜单中,选择工具->选项,即可进入选项窗口。

 下面根据书籍内容,简要介绍介绍部分选项内容。

环境外观相关的设置,更改主题、字体、文本大小、语言及其所有设置文本编辑器设置包括代码编辑器相关的所有内容FakeVim为熟悉Vim编辑器的人准备的,启用并配置Vim样式的代码编辑帮助包含帮助与上下文帮助相关的所有选项C++与C++编码和代码编辑相关的设置Qt Quick影响Qt Quick设计器以及QML代码编辑的选项构建和运行可能是Qt Creator中最重要的选项页,这里的设置会直接影响应用程序的构建和运行体验调试器与调试模式相关设计师配置模板项目以及与设计模式相关的其他设置分析器包括Clang代码分析器、QML分析器等相关设置版本控制Qt提供了众多版本控制系统的非常可靠的集成,如Git和SVN,这里提供与版本控制相关的所有设置设备可以用它为安卓开发配置Qt Creator,包括与设备相关的所有设置代码粘贴用于配置一些第三方服务,这些服务可以用于代码共享之类的任务测试Qt测试相关的设置等2 OpenCV+Qt的简易项目

        最后,是一个OpenCV+Qt的简易项目,主要用到了编辑模式和设计模式。

        首先展示项目的大致结果

        如图可以完成一个简易的图像过滤程序,选择对原始图像进行中值过滤或高斯过滤,保存处理后的图像并选择是否显示。

        首先是设计用户界面:

        然后开始代码编辑,首先不要忘记在PRO文件中添加代码保证Opencv的正常使用。

INCLUDEPATH += E:\OpenCV\opencv\opencv_build\install\includeLIBS += E:\OpenCV\opencv\opencv_build\lib\libopencv_*.a

         接下来为每一个需求以及用户界面上的相关控件编写代码。

        以inputPushButton为例,切换到设计器,右击选择转到槽,在该控件可以发出的所有信号中选择pressed。

 

        然后将自动添加代码到头文件和.cpp文件。

 

        接下来同样编辑其他控件的代码。mainwindow.h和mainwindow.cpp的文件内容如下,其中包含部分注释解释代码含义。

mainwindow.h

#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include<QFileDialog>#include<QDir>#include<QFile>#include<QMessageBox>#include<QCloseEvent>#include<QSettings>#include<QTranslator>#include"opencv2/opencv.hpp"QT_BEGIN_NAMESPACEnamespace Ui { class MainWindow; }QT_END_NAMESPACEclass MainWindow : public QMainWindow{ Q_OBJECTpublic: MainWindow(QWidget *parent = nullptr); ~MainWindow();protected: //QCloseEvent类:用来传递有关窗口关闭事件的参数 void closeEvent(QCloseEvent*event); void changeEvent(QEvent*event);private slots: void on_inputPushButton_pressed(); void on_outputPushButton_pressed(); void on_actionTurkish_triggered(); void on_actionGerman_triggered(); void on_actionEnglish_triggered();private: Ui::MainWindow *ui; void loadSettings(); void saveSettings(); QTranslator *turkishTranslator; QTranslator*germanTranslator;//土耳其语翻译 德语翻译};#endif // MAINWINDOW_H

 mainwindow.cpp

#include "mainwindow.h"#include "ui_mainwindow.h"//#include <opencv2/core/core.hpp>//#include <opencv2/highgui/highgui.hpp>//#include <opencv2/imgproc/imgproc.hpp>//using namespace cv;MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow){// 测试opencv与Qt配置// Mat img=imread("../learn_opencv/data/test1.png");// namedWindow( "Display window", WINDOW_AUTOSIZE );// imshow("Display window", img); ui->setupUi(this); loadSettings(); turkishTranslator=new QTranslator(this); turkishTranslator->load(":/translation/translation_tr.qm"); germanTranslator=new QTranslator(this); germanTranslator->load(":/translation/translation_de.qm");}MainWindow::~MainWindow(){ delete ui;}void MainWindow::on_inputPushButton_pressed(){ //QString类:表示Unicode字符串 执行存储 转换 修改 等操作 //QFileDialog类:选择计算机上的文件或文件夹 //QDir类:用于访问计算机上的文件夹,并获取有关文件夹的各种类型信息 //QFile类:访问文件 读取或写入文件 //getOpenFileName函数: //1 父控件 告诉编译器 QT 该类负责处理 QFileDialog类实例 //2 窗口标题 //3 当前路径 //4 确保应用程序只显示三种文件类型 QString fileName = QFileDialog::getOpenFileName(this, tr( "Open Input Image"), QDir::currentPath(), "Images(*.jpg *.png *.bmp)"); if(QFile::exists(fileName)){ ui->inputLineEdit->setText(fileName); }}void MainWindow::on_outputPushButton_pressed(){ //getSaveFileName函数:保存输出图像 //4 保存时可单独选择每个图像类型 //一般情况下 路径不能含中文 QString fileName = QFileDialog::getSaveFileName(this, tr("select Output Image"), QDir::currentPath(), "*.jpg;;*.png *;;.bmp"); if(!fileName.isEmpty()){ ui->outputLineEdit->setText(fileName); //所有OpenCV函数都包含在cv命名空间中 要确保正在使用cv using namespace cv; Mat inpImg,outImg; //注意:OpenCV使用C++ std::string 要将QString转换过来 //QString是控件的text()函数的返回值类型 inpImg=imread(ui->inputLineEdit->text().toStdString()); if(ui->medianBlurRadioButton->isChecked()){ cv::medianBlur(inpImg,outImg,5); } else if(ui->gaussianBlurRadioButton->isChecked()){ cv::GaussianBlur(inpImg,outImg,Size(5,5),1.25); } imwrite(fileName.toStdString(),outImg); if(ui->displayimageCheckBox->isChecked()){ imshow("Output Image",outImg); } }}void MainWindow::closeEvent(QCloseEvent *event){ //QMessageBox类:显示简单的图标、文本或消息 int result=QMessageBox::warning(this, tr("Exit"), "Are you sure you want to close this program?", QMessageBox::Yes, QMessageBox::No); if(result == QMessageBox::Yes){ saveSettings(); event->accept(); } else{ event->ignore(); }}void MainWindow::loadSettings(){ QSettings settings("Packt","learn_opencv",this); ui->inputLineEdit->setText(settings.value("inputLineEdit", "").toString()); ui->outputLineEdit->setText(settings.value("outputLineEdit", "").toString()); ui->medianBlurRadioButton ->setChecked(settings.value("medianBlurRadioButton", true).toBool()); ui->gaussianBlurRadioButton ->setChecked(settings.value("gaussianBlurRadioButton", false).toBool()); ui->displayimageCheckBox ->setChecked(settings.value("displayimageCheckBox", false).toBool());}void MainWindow::saveSettings(){ //QSetting类:为其提供组织名称 应用程序名称 //可记录传递给setVale函数所有内容并用value返回 QSettings settings("Packt","learn_opencv",this); settings.setValue("inputLineEdit", ui->inputLineEdit->text()); settings.setValue("outputLineEdit", ui->outputLineEdit->text()); settings.setValue("medianBlurRadioButton", ui->medianBlurRadioButton->isChecked()); settings.setValue("gaussianBlurRadioButton", ui->gaussianBlurRadioButton->isChecked()); settings.setValue("displayimageCheckBox", ui->displayimageCheckBox->isChecked());}void MainWindow::on_actionTurkish_triggered(){ qApp->installTranslator(turkishTranslator);}void MainWindow::on_actionGerman_triggered(){ qApp->installTranslator(germanTranslator);}void MainWindow::on_actionEnglish_triggered(){ qApp->removeTranslator(turkishTranslator); qApp->removeTranslator(germanTranslator);}void MainWindow::changeEvent(QEvent *event){ //如果更改事件是语言更改 则翻译窗口 否则照常 if(event->type()==QEvent::LanguageChange){ ui->retranslateUi(this); } else{ QMainWindow::changeEvent(event); }}

          最后,简单记录一下学习的几个新的Qt类。

QString类可能是Qt最重要并被广泛使用的类之一,表示Unicode字符串,可以用来对字符串执行存储、转换、修改或无数其他操作QFileDialog类用于选择计算机上的文件或文件夹。使用底层操作系统的API,因此操作系统不同,对话框可能也有不同QDir类用于访问计算机上的文件夹,并获取有关文件夹的各种类型信息QFile类用于访问文件,读取或写入文件QMessBox类用来显示简单的图标、文本或消息,取决于消息的用途QCloseEvent类Qt的众多事件类的一个,用于传递有关窗口关闭的时间参数QSettings类为其提供组织名称和应用程序名称,它可以记录下来传递给setValue函数的所有内容并用value函数返回它
本文链接地址:https://www.jiuchutong.com/zhishi/298806.html 转载请保留说明!

上一篇:JavaScript核心技术之JSON详解(javascript核心技术)

下一篇:【AI】AI 工具合集(ai工具用法)

  • ipad ios11壁纸(ipad ios11)(ipad壁纸苹果)

    ipad ios11壁纸(ipad ios11)(ipad壁纸苹果)

  • iqoo8后盖材质(iqoo 8 pro后盖材质)

    iqoo8后盖材质(iqoo 8 pro后盖材质)

  • 荣耀平板v7pro有耳机孔吗(荣耀平板v7Pro有云电脑吗)

    荣耀平板v7pro有耳机孔吗(荣耀平板v7Pro有云电脑吗)

  • 畅联语音什么意思(畅联语音是咋回事)

    畅联语音什么意思(畅联语音是咋回事)

  • 天猫u先怎么搜索自己想要的商品(淘宝里的天猫u先在哪)

    天猫u先怎么搜索自己想要的商品(淘宝里的天猫u先在哪)

  • 手机上的app不见了(手机的app不见了)

    手机上的app不见了(手机的app不见了)

  • 手机登不进路由器网址(手机为什么登不进路由器设置页面)

    手机登不进路由器网址(手机为什么登不进路由器设置页面)

  • 小米手环4怎么查询激活保修期(小米手环4怎么开机)

    小米手环4怎么查询激活保修期(小米手环4怎么开机)

  • 淘宝怎么退货?(淘宝怎么退货不用自己出运费)

    淘宝怎么退货?(淘宝怎么退货不用自己出运费)

  • 媒体平台类型有哪些(媒体平台的定义)

    媒体平台类型有哪些(媒体平台的定义)

  • 小米104g网络不稳定(小米提示网络不给力)

    小米104g网络不稳定(小米提示网络不给力)

  • 钉钉群直播能看到学员吗(钉钉群直播能看到观看人数吗)

    钉钉群直播能看到学员吗(钉钉群直播能看到观看人数吗)

  • vivox9s上市时间(vivox9s上市价格多少钱)

    vivox9s上市时间(vivox9s上市价格多少钱)

  • sim小卡怎么装到大卡手机(sim小卡怎么插中卡槽)

    sim小卡怎么装到大卡手机(sim小卡怎么插中卡槽)

  • reno2和reno2z的区别(reno2和reno2z的区别手机壳)

    reno2和reno2z的区别(reno2和reno2z的区别手机壳)

  • 投屏不成功是怎么回事(投屏不成功怎么办)

    投屏不成功是怎么回事(投屏不成功怎么办)

  • 苹果x屏幕原彩是什么(苹果x原彩屏是什么)

    苹果x屏幕原彩是什么(苹果x原彩屏是什么)

  • 域名地址和ip地址转换的系统是(域名地址和ip地址转换的协议)

    域名地址和ip地址转换的系统是(域名地址和ip地址转换的协议)

  • 苹果手机对号怎么打(苹果手机里对号怎么打)

    苹果手机对号怎么打(苹果手机里对号怎么打)

  • zg270 500钢的数字含义(zg200-400钢牌号的含义)

    zg270 500钢的数字含义(zg200-400钢牌号的含义)

  • 淘宝is备案是什么意思(淘宝平台备案是什么意思)

    淘宝is备案是什么意思(淘宝平台备案是什么意思)

  • WPS文档怎么自动生成目录(wps文档怎么自动换行)

    WPS文档怎么自动生成目录(wps文档怎么自动换行)

  • 贴吧如何私信(贴吧如何私信发图片)

    贴吧如何私信(贴吧如何私信发图片)

  • 等宽两栏栏宽怎么设置(等宽两栏怎么设置)

    等宽两栏栏宽怎么设置(等宽两栏怎么设置)

  • Windows 10如何卸载Skype(windows10如何卸载edge)

    Windows 10如何卸载Skype(windows10如何卸载edge)

  • java常见的日志框架(java中日志的作用)

    java常见的日志框架(java中日志的作用)

  • phpcms常量在哪里定义(phpcms怎么用)

    phpcms常量在哪里定义(phpcms怎么用)

  • 增值税附加税包括哪些税种及税率
  • 申报所得税季初资产总额怎么填?
  • 股权分配利润应该怎么做账
  • 农产品是零税率还是免税税率
  • 文化建设税怎么填
  • 小规模无票收入填在哪一栏
  • 长期利润分享计划属于短期薪酬吗
  • 加计抵减的税额多长时间
  • 电子普通发票重新开
  • 资产盘点的步骤是什么,需要注意哪些细节
  • 抹掉的零头怎么入账
  • 价格调节基金费率
  • 报销数字证书续费作财务凭证怎么做?
  • 旧设备进口关税
  • 营改增后租金如何交税
  • 发票开什么明目列福利费
  • 税务三方协议一式几份
  • 独生子女补贴是给父母还是子女的
  • 如何对投资收益进行会计处理
  • 物业公司安装监控为了什么
  • 一般纳税人申报表填写顺序
  • 生产企业出口货物必须以什么为计税依据计算免抵退税额
  • 坏账准备年底有余额吗
  • 销售净利率怎么求
  • 物业公司收取的广告费开什么发票
  • 增值税发票为什么要勾选认证
  • 公司必须开基本户才能开发票吗
  • 不附追索权的票据包括
  • codeinteger
  • wlan和蜂窝版的区别
  • php __destruct
  • 其他应付款转营业外收入摘要
  • vuecli websocket
  • 本月营业利润
  • php连接mysql数据库的几种方式及区别
  • 公司买发票的费用怎么做账?
  • 小程序和公众号可以同名吗
  • tomcat的安装配置
  • mkpart命令
  • 水利建设基金计算公式
  • 不确认收款退款对方还能收到钱么?
  • 认证系统维护费怎么算
  • 土地增值税可以抵扣吗
  • 一般人转小规模政策到什么时候
  • 保教费属于什么收入
  • PHPCMS 是 ThinkPHP 开发的吗?
  • 用友t3财务软件价格表
  • 使用mysqldump备份数据库
  • 临时工工资计入什么费用
  • 企业所得税征前还是征后
  • 在会计中,结转材料实际采购成本时什么意思
  • 季节性停工固定资产折旧计入什么科目
  • 土地使用权属于无形资产吗
  • 买车的车
  • 公允价值的通俗理解
  • 失业保险费返还怎么做账
  • xp如何查看系统位数
  • mac怎么卸载第三方软件
  • mac开机慢开机以后特别卡
  • linux系统中怎么输入中文
  • 电脑操作系统7
  • ubuntu20.04安装配置
  • linux小技巧
  • window高级启动会怎么样
  • unity www读取本地视频文件和外部视频文件 播放视频动画和视频声音
  • 游戏开发那些事
  • opengl learn
  • 老生常谈的错别字
  • javascript entries
  • shell监控进程
  • 批处理在windows中的典型应用
  • python制作windows安装程序
  • Git && GitHub 之远程协作
  • nodejs示例
  • js实现超精简的快捷键
  • python迭代器生成器
  • 江苏国税增值税退税怎么操作
  • 车船税是电子版的怎么年检
  • 开票软件重置密码去哪里
  • 北京朝阳区国家税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设