QT 创建主窗口
来源:互联网 发布:csol精准开启积分算法 编辑:程序博客网 时间:2024/04/30 20:41
C++GUI Qt4 创建主窗口
(1) Qt的资源机制
1)创建一个资源文件
2)在资源文件中添加前缀,例如这里/Icon(这里的前缀类似于文件在系统的目录,即在添加文件前需要创建一个目录),然后就可以添加文件了;
3)当引用这些资源时,需要使用带路径前缀:/(冒号斜线)的形式;
1
QIcon *mainIcon = new QIcon(":/Icon/mainIcon.gif");
(2) 应用程序的主窗口
通过子类化QMainWindow就可以创建一个应用程序的主窗口,一般该主窗口包括:窗口图标、窗口标题、菜单栏、工具栏、中央部件和状态栏。
1)动作(QAction类)
一个动作就是一个可以添加到菜单栏和工具栏中的的项;
QAction类的几个重要函数:
01
02
03
04
05
06
07
08
09
10
11
//构造函数
QAction:: QAction(const QString &text, QObject *parent);
//设置动作的图标
void QAction:: setIcon( const QIcon &icon);
//设置快捷键
void QAction:: setShortCut(const QKeySequence &shortcut);
//设置提示信息 ,当鼠标在QAction上时状态栏显示的提示
void QAction:: setStatusTip(const QString &statusTip);
例子:
01
02
03
04
05
06
07
08
09
10
void MainWindow::createActions()
{
newAction = new QAction(tr("&New"), this);
newAction->setIcon(QIcon(":/images/new.png"));
newAction->setShortcut(QKeySequence::New);
newAction->setStatusTip(tr("Create a new file"));
connect(newAction, SIGNAL(triggered()),
this, SLOT(newFile()));
//...
}
2)设置标题、图标和中央部件
1
2
3
4
5
6
7
8
//设置主窗口的中央部件
void QMainWindow:: setCentralWidget( QWidget *widget);
//设置主窗口的图标
void QMainWindow:: setWindowIcon( const QIcon &icon);
//设置主窗口的标题
void QMainWindow:: setWindowTitle( const QString str);
3)菜单栏(QMenuBar)和菜单(QMenu)
一个主窗口只有一个菜单栏,而菜单栏可以包含很多一级菜单、二级菜单和动作等;
01
02
03
04
05
06
07
08
09
10
11
//返回主窗口的菜单栏,没有则首先创建
QMenuBar *QMainWindow:: menBar() const;
//创建一个一级菜单,并返回指向新菜单的指针
QMenu *QMenuBar:: addMenu( const QString &title);
//创建一个下一级菜单,并返回指向新菜单的指针
QMenu *QMenu:: addMenu( const QString &title);
//在该菜单下添加一个已创建的动作
void QMenu:: addAction( QAction *action);
例子:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
void MainWindow::createMenus()
{
//创建一个一级菜单
fileMenu = menuBar()->addMenu(tr("&File"));
fileMenu->addAction(newAction);
//...
//创建一个一级菜单
editMenu = menuBar()->addMenu(tr("&Edit"));
editMenu->addAction(cutAction);
//...
//创建一个二级菜单
selectSubMenu = editMenu->addMenu(tr("&Select"));
selectSubMenu->addAction(selectRowAction);
//...
}
4)上下文菜单(右键时弹出的菜单)
1
2
3
4
5
//添加到相关联的QAction列表
void QWidget:: addAction( QAction *action);
//激活上下文菜单
void QWidget:: setContextMenuPolicy( Qt::ContextMenuPolicy p );
每一个QWidget对象或它的派生类对象,都有一个与之相关联的QAction列表;当p为Qt::ActionsContextMenu时,在该QWidget上右击即可显示与之相关联的QAction列表;
例子:
1
2
3
4
5
6
7
void MainWindow::createContextMenu()
{
spreadsheet->addAction(cutAction);
spreadsheet->addAction(copyAction);
spreadsheet->addAction(pasteAction);
spreadsheet->setContextMenuPolicy(Qt::ActionsContextMenu);
}
5)状态栏
主窗口只有一个状态栏,状态栏指示器是一些简单的QLabel;
1
2
//返回状态栏,没有则首先创建
QStatusBar *QMainWindow:: statusBar() const;
例子:
01
02
03
04
05
06
07
08
09
10
11
12
13
void MainWindow::createStatusBar()
{
leftLabel = new QLabel(" A1 ");
leftLabel->setAlignment(Qt::AlignHCenter);//中间对齐
leftLabel->setMinimumSize(locationLabel->sizeHint());
rightLabel = new QLabel;
rightLabel->setIndent(3);//设置其text初始位置的偏移量
//设置状态栏的组成
statusBar()->addWidget(leftLabel);
statusBar()->addWidget(rightLabel, 1);//1:尽可能伸展
}
状态栏有时需要显示一些临时消息(如下),这时可以调用showMessage函数,它可以隐藏常规状态栏,并在状态栏位置上显示临时信息;
1
void QStatusBar::showMessage(const QString &msg, int timeout=0);
其中timeout即为临时消息持续显示的时间,单位为毫秒;当timeout为0时则临时信息会保持显示直到clearMessage或showMessage再次调用为止;
(3) 一些常用函数
1)消息框
01
02
03
04
05
06
07
08
09
10
11
//warning
StandardButton QMessageBox:: warning(...);
//information
StandardButton QMessageBox:: information(...);
//question
StandardButton QMessageBox:: question(...);
//critical
StandardButton QMessageBox:: critical(...);
2)获得打开文件或保存文件的全路径
1
2
3
4
5
//getOpenFileName
QString QFileDialog:: getOpenFileName(...);
//getSaveFileName
QString QFileDialog:: getSaveFileName(...);
3)QSettings保存与读取设置
01
02
03
04
05
06
07
08
09
10
11
12
//QSettings构造函数
QSettings:: QSettings(const QString &organization,
const QString &application,
QObject *parent = 0);
//保存设置
void QSettings:: setValue(const QString &key,
const QVariant &value);
//读取设置
QVariant QSettings:: value(const QString &key,
const QVariant &defaultValue);
例子:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
void MainWindow::writeSettings()
{
QSettings settings("Software Inc.", "Spreadsheet");
//保存主窗口的几何形状
settings.setValue("geometry",saveGeometry());
//保存设置的值
settings.setValue("showGrid",showGridAction->isChecked());
}
void MainWindow::readSettings()
{
QSettings settings("Software Inc.", "Spreadsheet");
//读取主窗口的几何形状并设置
restoreGeometry(settings.value("geometry").toByteArray());
//读取保存的值
bool showGrid = settings.value("showGrid", true).toBool();
}
4)使用系统的剪贴板
1
2
3
4
5
6
7
8
9
//返回系统的剪贴板
QClipboard *QApplication:: clipboard() const;
//将text复制到剪贴板
void QClipboard:: setText( const QString &text,
Mode mode = Clipboard);
//从剪贴板中获得
QString QClipboard:: text(Mode mode = Clipboard);
- QT创建主窗口
- [Qt]创建主窗口
- QT 创建主窗口
- QT 创建主窗口 MainWindow 实例
- Qt学习之三:创建主窗口
- 6--QT 创建主窗口MainWindow
- QT 创建无边窗口
- Qt 创建OpenGL窗口
- qt创建无边框窗口
- QT开发 查找窗口创建
- Qt OpenGL----创建openGL窗口
- Qt学习之对话框与主窗口的创建
- QT创建两个窗口(一个窗口包含另一窗口)
- QT带有主创窗口应用程序的创建
- QT创建自定义窗口部件笔记
- Qt之无边框窗口创建
- vs2013+qt5.5.0创建qt窗口工程
- 用QT创建一个窗口的代码
- 实战MEF(5):导出元数据
- UVA 11300
- 网页知识——(移动web篇)
- Android安全分析挑战:运行时篡改Dalvik字节码
- 多國語言版本設計示範
- QT 创建主窗口
- 项目管理经验总结
- log4j的基础信息记录
- 在LINUX的命令提示符及CMD命令提示符中显示时间
- Delphi 消息实现窗口最小化,最大化,关闭(delphi)
- android socket编程实例
- epoll使用详解
- Ubuntu 64位 安装 flashplayer
- C#中常用的几种读取XML文件的方法