随笔分类 - QT
摘要:现在我们的按钮还不支持复制,粘贴这些操作,那我们接下来做这些事情。首先我们将剪切和复制两个按钮设置成不可见cutAct->setEnabled(false); copyAct->setEnabled(false);然后加上两个连接connect(textEdit, SIGNAL(copyAvailable(bool)), cutAct,SLOT(setEnabled(bool))); connect(textEdit, SIGNAL(copyAvailable(bool)), copyAct, SLOT(setEnabled(bool)));这两个什么意思呢,当我们用鼠标选择了一段
阅读全文
摘要:菜单栏有了,工具栏也有了,连用户可以输入的编辑框也有了,接下来当然是给我们这些按钮添加动作,以完成一个记事本的功能。1.打开文件首先我们在类中定义一个槽,还记得槽是怎么声明的吗,就是在private slots:下声明一个函数。private slots: void loadFile();然后我们在mainwindow.cpp中实现这个函数,其中我们要用到一个变量,mFileName表示当前文本文件的名字,这里定义成QString类型,还是要在类中定义这个变量。QString mFileName;void MainWindow::loadFile(){ QString fileName = .
阅读全文
摘要:如何给工具栏上按钮添加图标在Qt Creator中新建一个Qt Resource file在Add下拉菜单中选择Add Prefix,表示添加一个前缀,这里我们将默认的/new/prefix修改为/,然后在Add下拉菜单中选择Add File,表示将图片添加进来,我们可以在工程目录下新建一个目录,比如images,专门用于存放图片。我们在创建QAction的同时就为这个action添加一个图标,例如newAct = new QAction(tr("new"), this);newAct->setIcon(QIcon(":/images/new.png&quo
阅读全文
摘要:1.添加菜单栏我们MainWindow类中添加如下成员QMenu *fileMenu;QAction *newAct;QAction *openAct;QAction *saveAct;其中QMenu代表一个菜单,QAction代表菜单中的一个选项,在头文件里还要增加这两个类的前置声明class QMenu;class Qaction;接下来在声明两个私有函数,一个用于我们创建菜单,一个用于创建菜单中的选项。void createActions();void createMenus();然后在mainwindow.cpp中实现这两个方法void MainWindow::createAction
阅读全文
摘要:在上一个例子中我们创建了一个非常简单的QMainWindow,接下来我们以实际例子来一步一步(stepby step)的写一个类似于记事本的程序,我们就叫它textedit。首先我们在mainwindow.h中新建一个类MainWindow继承QMainWindow,里面只有一个构造函数MainWindow()。/*mainwindow.h*/#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>class MainWindow : public QMainWindow{ Q_OBJECTpublic: Main
阅读全文
摘要:什么是QMainWindow?QmainWindow类继承QWidget类,它是QT提供的一个主应用程序窗口类,它包含菜单栏(MenuBar),工具栏(ToolBar),状态栏(StatusBar)以及提供给用户的工作空间(CentralWidget)等。例子#include <QApplication>#include <QMainWindow>#include <QLabel>int main(int argc, char *argv[]){ QApplication app(argc, argv); QMainWindow window; QLabel
阅读全文
摘要:在QT编程中,如果遇到多个控件,但是他们的槽大致相同,这个该怎么处理,比如10个button,难道要写10个槽,可以不必这样,QSignalMapper可以帮组我们解决。 QSignalMapper *signalMapper = new QSignalMapper(this); for (i = 0; i < 10; i++) { button = new QPushButton(QObject::tr(buttonName)); signalMapper->set
阅读全文
摘要:信号和槽是QT的核心,在其他GUI中大多采用消息和回调函数,比如win32中#include <QApplication>#include <QPushButton>int main(int argc, char *argv[]){ QApplication app(argc, argv); QPushButton button("Quit"); button.show(); QObject::connect(&button, SIGNAL(clicked()), &app, SLOT(quit())); return app.exe
阅读全文
摘要:使用new操作符来定义一个对象QVBoxLayout *layout = new QVBoxLayout(&window);另外一种方法QVBoxLayout layout(&window);C++并没有提供内存自动管理机制,通常,需要程序开发人员自己去做这些事情,比如在构造函数中使用了new去申请了一个对象,那么在析构函数中就要显示的调用delete去删除这个对象。但是QT提供了它自己的内存管理,QT的类构造函数都会有个parent参数,用于指明它的父对象,QT提供了这样的机制,当父对象调用delete时,QT会自动的delete所有的子对象。所以在使用new操作符去申请对象
阅读全文
摘要:关于布局,布局可以采用绝对定位和布局定位,绝对定位就是直接给出坐标值,但是如果用户改变了窗口大小,比如最大化,如果你自己不做处理,那么窗口上面的这些控件还是在原来位置,并不能随着窗口变化而变化。QT提供了布局管理器,可以避免这种问题出现,常用的有水平布局,垂直布局,网格布局在布局管理器中使用addWidget添加一个控件,使用addLayout添加一个子布局1.水平布局#include <QApplication>#include <QPushButton>#include <QHBoxLayout>int main(int argc, char *argv
阅读全文
摘要:为了是我们的QT程序支持如中文等其他语言,通常的做法是在需要翻译的地方显示的用tr标记,所以你在阅读其他人编写的源程序时会看到很多字符串做了tr标记,这样做是有原因的。1.在hello.pro文件中增加TRANSLATIONS = hello_zh_CN.ts2.进入工程目录,运行lupdate hello.pro,生成hello_zh_CN.ts文件3.使用Qt Creator打开这个文件(或者直接用vi或gedit打开都可以),对翻译部分进行翻译,比如<source>hello!</source><translation type="unfinish
阅读全文
摘要:qt学习第一个程序hello world!新建一个空的工程hello,然后新建一个文件main.cpp,在main.cpp里面添加内容如下#include <QApplication>#include <QLabel>int main(int argc, char *argv[]){ QApplication app(argc, argv); QLabel label(QObject::tr("Hello, world!")); label.show(); return app.exec();}前面两行包含头文件,在QT 4中,头文件和类名是一致的,
阅读全文
浙公网安备 33010602011771号