您的位置:首页 > 编程语言 > Qt开发

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(); //通用手段 继续向下传递

}

有错误 请指正
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c++ qt