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

智能建站系统个人网站淘客怎么做网站

智能建站系统个人网站,淘客怎么做网站,网络营销市场调研的内容,wordpress网页如何上传下载文章目录 1.QMainWindow1.1菜单栏1.2 工具栏1.3 状态栏1.4 铆接部件1.5 核心部件#xff08;中心部件#xff09;1.6 资源文件 2.对话框2.1 基本概念2.2 标准对话框2.3 自定义消息框2.4 消息对话框2.5 标准文件对话框 1.QMainWindow QMainWindow是一个为用户提供主窗口程序的… 文章目录 1.QMainWindow1.1菜单栏1.2 工具栏1.3 状态栏1.4 铆接部件1.5 核心部件中心部件1.6 资源文件 2.对话框2.1 基本概念2.2 标准对话框2.3 自定义消息框2.4 消息对话框2.5 标准文件对话框 1.QMainWindow QMainWindow是一个为用户提供主窗口程序的类包含一个菜单栏menu bar、多个工具栏(tool bars)、多个锚接部件(dock widgets)、一个状态栏(status bar)及一个中心部件(central widget)是许多应用程序的基础如文本编辑器图片编辑器等。 1.1菜单栏 一个主窗口最多只有一个菜单栏。位于主窗口顶部、主窗口标题栏下面。  创建菜单栏通过QMainWindow类的menubar函数获取主窗口菜单栏指针 QMenuBar * menuBar() const 创建菜单调用QMenu的成员函数addMenu来添加菜单 QAction* addMenu(QMenu * menu) QMenu* addMenu(const QString title) QMenu* addMenu(const QIcon icon, const QString title) 创建菜单项调用QMenu的成员函数addAction来添加菜单项 QAction* activeAction() const QAction* addAction(const QString text) QAction* addAction(const QIcon icon, const QString text) QAction* addAction(const QString text, const QObject * receiver,const char * member, const QKeySequence shortcut 0) QAction* addAction(const QIcon icon, const QString text, const QObject * receiver, const char * member, const QKeySequence shortcut 0)Qt 并没有专门的菜单项类只是使用一个QAction类抽象出公共的动作。当我们把QAction对象添加到菜单就显示成一个菜单项添加到工具栏就显示成一个工具按钮。用户可以通过点击菜单项、点击工具栏按钮、点击快捷键来激活这个动作。 1.2 工具栏 主窗口的工具栏上可以有多个工具条通常采用一个菜单对应一个工具条的的方式也可根据需要进行工具条的划分。  直接调用QMainWindow类的addToolBar函数获取主窗口的工具条对象每增加一个工具条都需要调用一次该函数。  插入属于工具条的动作即在工具条上添加操作。 通过QToolBar类的addAction函数添加。  工具条是一个可移动的窗口它的停靠区域由QToolBar的allowAreas决定包括  Qt::LeftToolBarArea 停靠在左侧  Qt::RightToolBarArea 停靠在右侧  Qt::TopToolBarArea 停靠在顶部  Qt::BottomToolBarArea 停靠在底部  Qt::AllToolBarAreas 以上四个位置都可停靠使用setAllowedAreas函数指定停靠区域 setAllowedAreasQt::LeftToolBarArea | Qt::RightToolBarArea使用setMoveable函数设定工具栏的可移动性 setMoveablefalse//工具条不可移动, 只能停靠在初始化的位置上1.3 状态栏  派生自QWidget类使用方法与QWidget类似QStatusBar类常用成员函数  状态栏也只能最多有一个 //添加小部件 void addWidget(QWidget * widget, int stretch 0) //插入小部件 int insertWidget(int index, QWidget * widget, int stretch 0) //删除小部件 void removeWidget(QWidget * widget)1.4 铆接部件 铆接部件 QDockWidget也称浮动窗口可以有多个。 QDockWidget * dock new QDockWidget(标题,this);addDockWidget(Qt::LeftDockWidgetArea,dock); dock-setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::TopDockWidgetArea); //设置区域范围1.5 核心部件中心部件 除了以上几个部件中心显示的部件都可以作为核心部件例如一个记事本文件可以利用QTextEdit做核心部件 QTextEdit * edit new QTextEdit(this); setCentralWidget(edit);1.6 资源文件 Qt 资源系统是一个跨平台的资源机制用于将程序运行时所需要的资源以二进制的形式存储于可执行文件内部。如果你的程序需要加载特定的资源图标、文本翻译等那么将其放置在资源文件中就再也不需要担心这些文件的丢失。也就是说如果你将资源以资源文件形式存储它是会编译到可执行文件内部。 使用 Qt Creator 可以很方便地创建资源文件。我们可以在工程上点右键选择“添加新文件…”可以在 Qt 分类下找到“Qt 资源文件” 右侧的编辑区有个“添加”我们首先需要添加前缀比如我们将前缀取名为 /。然后选中这个前缀继续点击添加文件可以找到我们所需添加的文件。 接下来我们还可以添加另外的前缀或者另外的文件。这取决于你的需要。当我们添加完成之后我们可以像前面一章讲解的那样通过使用 : 开头的路径来找到这个文件。比如我们的前缀是 /images文件是 document-open.png那么就可以使用:/images/document-open.png找到这个文件。 这么做带来的一个问题是如果以后我们要更改文件名比如将 docuemnt-open.png 改成 docopen.png那么所有使用了这个名字的路径都需要修改。所以更好的办法是我们给这个文件去一个“别名”以后就以这个别名来引用这个文件。具体做法是选中这个文件添加别名信息 这样我们可以直接使用:/images/doc-open引用到这个资源无需关心图片的真实文件名。 如果我们使用文本编辑器打开 res.qrc 文件就会看到一下内容 RCCqresource prefix/fileImage/butterfly.png/filefileImage/butterfly1.png/filefileImage/down.png/filefileImage/Frame.jpg/filefileImage/Luffy.png/filefileImage/LuffyQ.png/filefileImage/mario.gif/filefileImage/OnePiece.png/filefileImage/Sunny.jpg/filefileImage/sunny.png/filefileImage/up.png/file/qresource /RCC我们可以对比一下看看 Qt Creator 帮我们生成的是怎样的 qrc 文件。当我们编译工程之后我们可以在构建目录中找到 qrc_res.cpp 文件这就是 Qt 将我们的资源编译成了 C 代码。 mainwindow.cpp #include mainwindow.h #include QToolBar #include QMenuBar #include QDebug #include QPushButton #include QStatusBar #include QLabel #include QDockWidget #include QTextEditMainWindow::MainWindow(QWidget *parent): QMainWindow(parent) {//重置窗口大小resize(600,400);//菜单栏最多只能有一个//菜单栏创建QMenuBar * barmenuBar();//将菜单栏放入窗口setMenuBar(bar);//创建菜单QMenu * fileMenubar-addMenu(文件);QMenu * editMenubar-addMenu(编辑);//创建菜单项QAction *newActionfileMenu-addAction(新建);//添加分割线fileMenu-addSeparator();QAction *openActionfileMenu-addAction(打开);//工具栏可以有多个QToolBar * toolBarnew QToolBar(this);//设置默认停靠在左边addToolBar(Qt::LeftToolBarArea,toolBar);//后期设置只允许左右停靠toolBar-setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);//设置浮动 -false不允许浮动toolBar-setFloatable(true);//设置移动总开关)toolBar-setMovable(true);//工具栏中可以设置内容toolBar-addAction(newAction);//添加分割线toolBar-addSeparator();toolBar-addAction(openAction);//工具栏中添加按钮QPushButton* btnnew QPushButton(按钮,this);toolBar-addWidget(btn);//状态栏 最多有一个QStatusBar * stBarstatusBar();//设置到窗口中setStatusBar(stBar);//放标签控件QLabel* labelnew QLabel(提示信息,this);stBar-addWidget(label);QLabel* label2new QLabel(右侧提示信息,this);stBar-addPermanentWidget(label2);//铆接部件浮动窗口 可以有多个QDockWidget * dockWidgetnew QDockWidget(浮动,this);//放在窗口上的底部区域addDockWidget(Qt::BottomDockWidgetArea,dockWidget);//设置后期停靠区域 上下dockWidget-setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);//设置中心部件只能有一个QTextEdit *editnew QTextEdit(this);setCentralWidget(edit); MainWindow::~MainWindow() {}2.对话框 2.1 基本概念 对话框是 GUI 程序中不可或缺的组成部分。很多不能或者不适合放入主窗口的功能组件都必须放在对话框中设置。对话框通常会是一个顶层窗口出现在程序最上层用于实现短期任务或者简洁的用户交互。 Qt 中使用QDialog类实现对话框。就像主窗口一样我们通常会设计一个类继承QDialog。QDialog及其子类以及所有Qt::Dialog类型的类的对于其 parent 指针都有额外的解释如果 parent 为 NULL则该对话框会作为一个顶层窗口否则则作为其父组件的子对话框此时其默认出现的位置是 parent 的中心。顶层窗口与非顶层窗口的区别在于顶层窗口在任务栏会有自己的位置而非顶层窗口则会共享其父组件的位置。 对话框分为模态对话框和非模态对话框。  模态对话框就是会阻塞同一应用程序中其它窗口的输入。 模态对话框很常见比如“打开文件”功能。你可以尝试一下记事本的打开文件当打开文件对话框出现时我们是不能对除此对话框之外的窗口部分进行操作的。  与此相反的是非模态对话框例如查找对话框我们可以在显示着查找对话框的同时继续对记事本的内容进行编辑。 2.2 标准对话框 所谓标准对话框是 Qt 内置的一系列对话框用于简化开发。事实上有很多对话框都是通用的比如打开文件、设置颜色、打印设置等。这些对话框在所有程序中几乎相同因此没有必要在每一个程序中都自己实现这么一个对话框。 Qt 的内置对话框大致分为以下几类  QColorDialog 选择颜色  QFileDialog 选择文件或者目录  QFontDialog 选择字体  QInputDialog 允许用户输入一个值并将其值返回  QMessageBox 模态对话框用于显示信息、询问问题等  QPageSetupDialog 为打印机提供纸张相关的选项  QPrintDialog 打印机配置  QPrintPreviewDialog打印预览  QProgressDialog 显示操作过程。 2.3 自定义消息框 Qt 支持模态对话框和非模态对话框。 模态与非模态的实现  使用QDialog::exec()实现应用程序级别的模态对话框  使用QDialog::open()实现窗口级别的模态对话框  使用QDialog::show()实现非模态对话框。 模态对话框  Qt 有两种级别的模态对话框  应用程序级别的模态 当该种模态的对话框出现时用户必须首先对对话框进行交互直到关闭对话框然后才能访问程序中其他的窗口。  窗口级别的模态 该模态仅仅阻塞与对话框关联的窗口但是依然允许用户与程序中其它窗口交互。窗口级别的模态尤其适用于多窗口模式。 一般默认是应用程序级别的模态。 在下面的示例中我们调用了exec()将对话框显示出来因此这就是一个模态对话框。当对话框出现时我们不能与主窗口进行任何交互直到我们关闭了该对话框。 QDialog dialog;dialog.setWindowTitle(tr(Hello, dialog!)); dialog.exec();非模态对话框 下面我们试着将exec()修改为show()看看非模态对话框 QDialog dialog(this); dialog.setWindowTitle(tr(Hello, dialog!)); dialog.show();是不是事与愿违对话框竟然一闪而过这是因为show()函数不会阻塞当前线程对话框会显示出来然后函数立即返回代码继续执行。注意dialog 是建立在栈上的show()函数返回MainWindow::open()函数结束dialog 超出作用域被析构因此对话框消失了。知道了原因就好改了我们将 dialog 改成堆上建立当然就没有这个问题了 QDialog *dialog new QDialog; dialog-setWindowTitle(tr(Hello, dialog!)); dialog-show();如果你足够细心应该发现上面的代码是有问题的dialog 存在内存泄露dialog 使用 new 在堆上分配空间却一直没有 delete。解决方案也很简单将 MainWindow 的指针赋给 dialog 即可。还记得我们前面说过的 Qt 的对象系统吗 不过这样做有一个问题如果我们的对话框不是在一个界面类中出现呢由于QWidget的 parent 必须是QWidget指针那就限制了我们不能将一个普通的 C 类指针传给 Qt 对话框。另外如果对内存占用有严格限制的话当我们将主窗口作为 parent 时主窗口不关闭对话框就不会被销毁所以会一直占用内存。在这种情景下我们可以设置 dialog 的WindowAttribute QDialog *dialog new QDialog; dialog-setAttribute(Qt::WA_DeleteOnClose); dialog-setWindowTitle(tr(Hello, dialog!)); dialog-show();setAttribute()函数设置对话框关闭时自动销毁对话框。 2.4 消息对话框 QMessageBox用于显示消息提示。我们一般会使用其提供的几个 static 函数  显示关于对话框。 void about(QWidget * parent, const QString title, const QString text)这是一个最简单的对话框其标题是 title内容是 text父窗口是 parent。对话框只有一个 OK 按钮。  显示关于 Qt 对话框。该对话框用于显示有关 Qt 的信息。 void aboutQt(QWidget * parent, const QString title QString())  显示严重错误对话框。 StandardButton critical(QWidget * parent, const QString title, const QString text, StandardButtons buttons Ok, StandardButton defaultButton NoButton);这个对话框将显示一个红色的错误符号。我们可以通过 buttons 参数指明其显示的按钮。默认情况下只有一个 Ok 按钮我们可以使用StandardButtons类型指定多种按钮。  与QMessageBox::critical()类似不同之处在于这个对话框提供一个普通信息图标。 StandardButton information(QWidget * parent, const QString title, const QString text, StandardButtons buttons Ok, StandardButton defaultButton NoButton); 与QMessageBox::critical ()类似不同之处在于这个对话框提供一个问号图标并且其显示的按钮是“是”和“否”。 StandardButton question(QWidget * parent, const QString title, const QString text, StandardButtons buttons StandardButtons( Yes | No ), StandardButton defaultButton NoButton)  与QMessageBox::critical()类似不同之处在于这个对话框提供一个黄色叹号图标。 StandardButton warning(QWidget * parent, const QString title, const QString text, StandardButtons buttons Ok, StandardButton defaultButton NoButton) 我们可以通过下面的代码来演示下如何使用QMessageBox。 if (QMessageBox::Yes QMessageBox::question(this,tr(Question), tr(Are you OK?),QMessageBox::Yes | QMessageBox::No,QMessageBox::Yes)) {QMessageBox::information(this, tr(Hmmm...), tr(Im glad to hear that!)); } else {QMessageBox::information(this, tr(Hmmm...), tr(Im sorry!)); }我们使用QMessageBox::question()来询问一个问题。  这个对话框的父窗口是 this。 QMessageBox是QDialog的子类这意味着它的初始显示位置将会是在 parent 窗口的中央。  第二个参数是对话框的标题。  第三个参数是我们想要显示的内容。  第四个参数是关联的按键类型我们可以使用或运算符|指定对话框应该出现的按钮。比如我们希望是一个 Yes 和一个 No。  最后一个参数指定默认选择的按钮。 这个函数有一个返回值用于确定用户点击的是哪一个按钮。按照我们的写法应该很容易的看出这是一个模态对话框因此我们可以直接获取其返回值。 QMessageBox类的 static 函数优点是方便使用缺点也很明显非常不灵活。我们只能使用简单的几种形式。为了能够定制QMessageBox细节我们必须使用QMessageBox的属性设置 API。如果我们希望制作一个询问是否保存的对话框我们可以使用如下的代码 QMessageBox msgBox; msgBox.setText(tr(The document has been modified.)); msgBox.setInformativeText(tr(Do you want to save your changes?)); msgBox.setDetailedText(tr(Differences here...)); msgBox.setStandardButtons(QMessageBox::Save| QMessageBox::Discard| QMessageBox::Cancel); msgBox.setDefaultButton(QMessageBox::Save); int ret msgBox.exec(); switch (ret) { case QMessageBox::Save:qDebug() Save document!;break; case QMessageBox::Discard:qDebug() Discard changes!;break; case QMessageBox::Cancel:qDebug() Close document!;break; }msgBox 是一个建立在栈上的QMessageBox实例。我们设置其主要文本信息为“The document has been modified.”informativeText 则是会在对话框中显示的简单说明文字。下面我们使用了一个detailedText也就是详细信息当我们点击了详细信息按钮时对话框可以自动显示更多信息。我们自己定义的对话框的按钮有三个保存、丢弃和取消。然后我们使用了exec()是其成为一个模态对话框根据其返回值进行相应的操作。 2.5 标准文件对话框 QFileDialog也就是文件对话框。在本节中我们将尝试编写一个简单的文本文件编辑器我们将使用QFileDialog来打开一个文本文件并将修改过的文件保存到硬盘。 首先我们需要创建一个带有文本编辑功能的窗口。借用我们前面的程序代码应该可以很方便地完成 openAction new QAction(QIcon(:/images/file-open),tr(Open...), this); openAction-setStatusTip(tr(Open an existing file));saveAction new QAction(QIcon(:/images/file-save), tr(Save...), this); saveAction-setStatusTip(tr(Save a new file));QMenu *file menuBar()-addMenu(tr(File)); file-addAction(openAction); file-addAction(saveAction);QToolBar *toolBar addToolBar(tr(File)); toolBar-addAction(openAction); toolBar-addAction(saveAction);textEdit new QTextEdit(this); setCentralWidget(textEdit);我们在菜单和工具栏添加了两个动作打开和保存。接下来是一个QTextEdit类这个类用于显示富文本文件。也就是说它不仅仅用于显示文本还可以显示图片、表格等等。不过我们现在只用它显示纯文本文件。QMainWindow有一个setCentralWidget()函数可以将一个组件作为窗口的中心组件放在窗口中央显示区。显然在一个文本编辑器中文本编辑区就是这个中心组件因此我们将QTextEdit作为这种组件。 我们使用connect()函数为这两个QAction对象添加响应的动作 connect(openAction, QAction::triggered, this, MainWindow::openFile); connect(saveAction, QAction::triggered, this, MainWindow::saveFile); 下面是最主要的openFile()和saveFile()这两个函数的代码 //打开文件 void MainWindow::openFile() {QString path QFileDialog::getOpenFileName(this,tr(Open File), ., tr(Text Files(*.txt)));if(!path.isEmpty()) {QFile file(path);if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {QMessageBox::warning(this, tr(Read File),tr(Cannot open file:\n%1).arg(path));return;}QTextStream in(file);textEdit-setText(in.readAll());file.close();} else {QMessageBox::warning(this, tr(Path),tr(You did not select any file.));} }//保存文件 void MainWindow::saveFile() {QString path QFileDialog::getSaveFileName(this,tr(Open File), ., tr(Text Files(*.txt)));if(!path.isEmpty()) {QFile file(path);if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {QMessageBox::warning(this, tr(Write File),tr(Cannot open file:\n%1).arg(path));return;}QTextStream out(file);out textEdit-toPlainText();file.close();} else {QMessageBox::warning(this, tr(Path),tr(You did not select any file.));} } 在openFile()函数中我们使用QFileDialog::getOpenFileName()来获取需要打开的文件的路径。这个函数原型如下 QString getOpenFileName(QWidget * parent 0,const QString caption QString(),const QString dir QString(),const QString filter QString(),QString * selectedFilter 0,Options options 0);不过注意它的所有参数都是可选的因此在一定程度上说这个函数也是简单的。这六个参数分别是  parent父窗口。 Qt 的标准对话框提供静态函数用于返回一个模态对话框  caption对话框标题  dir对话框打开时的默认目录  “.” 代表程序运行目录  “/” 代表当前盘符的根目录特指 Windows 平台Linux 平台当然就是根目录这个参数也可以是平台相关的比如“C:\”等  filter过滤器。 我们使用文件对话框可以浏览很多类型的文件但是很多时候我们仅希望打开特定类型的文件。比如文本编辑器希望打开文本文件图片浏览器希望打开图片文件。过滤器就是用于过滤特定的后缀名。如果我们使用“Image Files(.jpg .png)”则只能显示后缀名是 jpg 或者 png 的文件。如果需要多个过滤器使用“;;”分割比如“JPEG Files(.jpg);;PNG Files(.png)”  selectedFilter默认选择的过滤器  options对话框的一些参数设定 比如只显示文件夹等等它的取值是enum QFileDialog::Option每个选项可以使用 | 运算组合起来。 QFileDialog::getOpenFileName()返回值是选择的文件路径。我们将其赋值给 path。通过判断 path 是否为空可以确定用户是否选择了某一文件。只有当用户选择了一个文件时我们才执行下面的操作。 在saveFile()中使用的QFileDialog::getSaveFileName()也是类似的。使用这种静态函数在 Windows、Mac OS 上面都是直接调用本地对话框但是 Linux 上则是QFileDialog自己的模拟。这暗示了如果你不使用这些静态函数而是直接使用QFileDialog进行设置那么得到的对话框很可能与系统对话框的外观不一致。这一点是需要注意的。
http://www.hkea.cn/news/14412603/

相关文章:

  • 江门高端网站建设常州市建设局网站资质
  • wordpress 主题修改seo引擎优化是什
  • ps做素材下载网站wordpress 加logo
  • 确定网站风格成都小学网站建设
  • 怎么做网站代拍网站设计简单吗
  • wordpress安装插件导致网站徐州建设工程公共资源交易平台
  • 适合机械网站的wordpress主题模板图片生成二维码在线制作
  • 网站美工培训课程山东各地网站备案
  • 网站建设的步骤图卦神岭做网站
  • 女装东莞网站建设县城做网站
  • 网站制作app免费软件网站建设后怎么
  • 南昌网站建设_南昌做网站公司商场设计师
  • 网站规划与开发专业编程培训机构
  • 动态表情包在线制作网站99企业邮箱
  • 网站开发种类黄石网站建
  • 苏州专业高端网站建设企业广州城市建设规划局网站
  • 安全生产标准化建设网站青岛网站建设公司效果
  • 怎么利用网站上的图片安丘营销型网站建设
  • 网站建设图片流程图龙岩做网站开发多久时间
  • 专业的上海网站建设山西网站建设营销qq
  • 织梦dedecms医院类网站在线预约挂号插件_utf8如何推广企业平台
  • 成都网站设计合理柚v米科技项目推广平台有哪些
  • 遵义做网站哪家好wordpress 手机图片主题
  • 外贸型网站建设的基本流程企业建站电话多少
  • 做宣传 为什么要做网站那建e网灯具
  • htm网站的维护动漫做的游戏 迅雷下载网站有哪些
  • asp网站实例建站推广网站
  • 网站开发工程师公司哪个视频网站做视频赚钱
  • 中山建设厅网站360关键词指数查询
  • 山东建设工程招标网官方网站深圳网站设计哪家快