qt_简易记事本_5
2015-12-01 11:12
323 查看
接上次
我用的是vs2013 最初的时候 源代码中的汉字到了执行出窗口的时候 就乱码了 于是添加下面这句话
#pragma execution_character_set("utf-8") //执行时字符集设置
接下来是自定义对话框 用来询问是否对文件进行保存 基类为QDialog
QDialog::resize() //设置窗口大小尺寸
QDialog::setMinimumSize(int ,int ) //最小尺寸
QDialog::setMaximumSize(int ,int ) //最大尺寸
上面的两个函数的参数一样的时候 就固定了窗口的大小
///////////////////////////////////////////////////////
QLabel :标签类
QLabel::setAutoFillBackground(bool ) //是否进行自动填充背景
QLabel::setPalette(QPalette ) //为标签设置调色板
QPalette::setColor(QPalette::Background, QColor(255, 255, 255)); //QPalette::Background这个值现在等于QPalette::Window 常规的背景颜色
/////////////////////////////////////////////////////
QPushButton: 按钮类
QPushButton::setProperty(char * ,int ) //设置对象的name属性值为value 这个函数的参数的意思有点像 c++中STL中的mutilmap的 key 和 value
我用这个的目的是(保持每个按钮的char *一样 int 不一样) 在自定义对话框中有三个按钮 不同的按钮 带来的操作应该不一样 所以给每个按钮都setProperty 这样就可以在覆盖QDialog::accept()函数中进行判断哪一个按钮被按下
也可以使用QDialog自带的槽函数实现
accept()返回常量1 reject()返回常量0 done(int ) 返回参数
举个例子:
QPushButton *yes;
QPushButton *no;
connect(yes,SIGNAL(clicked()), this, SLOT(accept());
connect(no,SIGNAL(clicked()), this, SLOT(reject());
(clicked()信号:当按钮被按下的时候 发射这个信号)
那么返回的值到底返回到哪里去了呢?
假设上面的代码出现在继承了QDialog类的派生类diy_dialog中
diy_dialog *diy_dialog_one_object; //定义一个自定义对话框对象指针
int value = diy_dialog_one_object->exec(); //这个时候 点击的哪一个按钮 就会返回那个值 返回给value
如果点击了yes 返回1 点击了no 返回0 从而利用这两个值进行判断点击了什么按钮 从而进行后续的处理
那如果有好几个按钮呢? 那就使用done(int )槽
例如:
connect(another_button,SIGNAL(clicked()),this,SLOT(done(int ))) //这样可以解决了(我没有使用这个方法 我覆盖了accept()函数)
QPushButton::setFocus() //给按钮设置焦点 窗口出现的时候 就是被选中的 (这样便于直接回车确认)
QPushButton::setGeometry(int ,int ,int ,int ) //这个常见的很 设置初始显示位置 和 尺寸大小
下面是我覆盖QDialog::accept()函数 我的自定义对话框类为 class save_file_dlg //询问是否保存文件的对话框
void save_file_dlg::accept() //重载accept()槽函数
{
QPushButton *choose_button = qobject_cast<QPushButton *> (sender());
//QObject::Sender()返回发送信号的对象的指针,返回类型为QObject * 所以需要转换为原来按钮的指针
if (choose_button) //按钮不为空
{//choose_button_no 按下的按钮的 id号
choose_button_no = choose_button->property("choose").toInt(); //获取按下的按钮的int 值 类似于mutilmap中的value一样 从而知道按下的按钮是哪一个按钮
}
QDialog::accept(); //通用手段 继续向下传递
}
有错误 请指正
我用的是vs2013 最初的时候 源代码中的汉字到了执行出窗口的时候 就乱码了 于是添加下面这句话
#pragma execution_character_set("utf-8") //执行时字符集设置
接下来是自定义对话框 用来询问是否对文件进行保存 基类为QDialog
QDialog::resize() //设置窗口大小尺寸
QDialog::setMinimumSize(int ,int ) //最小尺寸
QDialog::setMaximumSize(int ,int ) //最大尺寸
上面的两个函数的参数一样的时候 就固定了窗口的大小
///////////////////////////////////////////////////////
QLabel :标签类
QLabel::setAutoFillBackground(bool ) //是否进行自动填充背景
QLabel::setPalette(QPalette ) //为标签设置调色板
QPalette::setColor(QPalette::Background, QColor(255, 255, 255)); //QPalette::Background这个值现在等于QPalette::Window 常规的背景颜色
/////////////////////////////////////////////////////
QPushButton: 按钮类
QPushButton::setProperty(char * ,int ) //设置对象的name属性值为value 这个函数的参数的意思有点像 c++中STL中的mutilmap的 key 和 value
我用这个的目的是(保持每个按钮的char *一样 int 不一样) 在自定义对话框中有三个按钮 不同的按钮 带来的操作应该不一样 所以给每个按钮都setProperty 这样就可以在覆盖QDialog::accept()函数中进行判断哪一个按钮被按下
也可以使用QDialog自带的槽函数实现
accept()返回常量1 reject()返回常量0 done(int ) 返回参数
举个例子:
QPushButton *yes;
QPushButton *no;
connect(yes,SIGNAL(clicked()), this, SLOT(accept());
connect(no,SIGNAL(clicked()), this, SLOT(reject());
(clicked()信号:当按钮被按下的时候 发射这个信号)
那么返回的值到底返回到哪里去了呢?
假设上面的代码出现在继承了QDialog类的派生类diy_dialog中
diy_dialog *diy_dialog_one_object; //定义一个自定义对话框对象指针
int value = diy_dialog_one_object->exec(); //这个时候 点击的哪一个按钮 就会返回那个值 返回给value
如果点击了yes 返回1 点击了no 返回0 从而利用这两个值进行判断点击了什么按钮 从而进行后续的处理
那如果有好几个按钮呢? 那就使用done(int )槽
例如:
connect(another_button,SIGNAL(clicked()),this,SLOT(done(int ))) //这样可以解决了(我没有使用这个方法 我覆盖了accept()函数)
QPushButton::setFocus() //给按钮设置焦点 窗口出现的时候 就是被选中的 (这样便于直接回车确认)
QPushButton::setGeometry(int ,int ,int ,int ) //这个常见的很 设置初始显示位置 和 尺寸大小
下面是我覆盖QDialog::accept()函数 我的自定义对话框类为 class save_file_dlg //询问是否保存文件的对话框
void save_file_dlg::accept() //重载accept()槽函数
{
QPushButton *choose_button = qobject_cast<QPushButton *> (sender());
//QObject::Sender()返回发送信号的对象的指针,返回类型为QObject * 所以需要转换为原来按钮的指针
if (choose_button) //按钮不为空
{//choose_button_no 按下的按钮的 id号
choose_button_no = choose_button->property("choose").toInt(); //获取按下的按钮的int 值 类似于mutilmap中的value一样 从而知道按下的按钮是哪一个按钮
}
QDialog::accept(); //通用手段 继续向下传递
}
有错误 请指正
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- QT学习 第一章:基本对话框
- 使用Shiboken为C++和Qt库创建Python绑定
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解