C++ 使用C+;将日期设置为QDateEdit+;
我有这个QDateEdit小部件,但它总是显示标准时间,如2014年1月1日(在DD-MM-YYYY中,但我可以在UI中更改)。但是如果对话框(QDateEdit小部件所在的位置)打开,我希望它显示当前时间。 我在一个标签上测试了这一点(参见void form_对话框)。但它的打印输出“sa 2013年11月23日”。但我想要像2013年11月23日那样。这也给了我一个错误:C++ 使用C+;将日期设置为QDateEdit+;,c++,qt,date,edit,C++,Qt,Date,Edit,我有这个QDateEdit小部件,但它总是显示标准时间,如2014年1月1日(在DD-MM-YYYY中,但我可以在UI中更改)。但是如果对话框(QDateEdit小部件所在的位置)打开,我希望它显示当前时间。 我在一个标签上测试了这一点(参见void form_对话框)。但它的打印输出“sa 2013年11月23日”。但我想要像2013年11月23日那样。这也给了我一个错误: QDateTimeEdit::setDate' : cannot convert parameter 1 from 'Q
QDateTimeEdit::setDate' : cannot convert parameter 1 from 'QString' to 'const QDate &'
Reason: cannot convert from 'QString' to 'const QDate'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
所以
谢谢
也许有一些可视化的东西是有用的,下面显示的小部件应该显示当前日期:首先,文档表明QDateEdit对象具有参数化构造函数,允许在构造时初始化日期:
QDateEdit::QDateEdit(常量QDate&date,QWidget*parent=0)
根据您如何实例化QDATEEDIT对象,您还可以考虑用自己的小部件进行子类QDTEEDIT,并在小部件的构造函数中设置QDATEEDIT对象。不过,这种方法可能会杀伤力过大(没有代码,很难推测什么是最好的…)
编辑后的问题提供了更多信息。文档表明QDateEdit方法接受QDate对象,而不是QString对象。因此,您的函数应该更像:void form_dialog::setCurrentDate()
{
QDate date = QDate::currentDate();
ui->DateEdit->setDate(date);
}
请注意,编译器在上面的错误消息中报告了不匹配的对象类型。如果要在对话框出现时显示当前日期,我将执行以下操作:
- 处理对话框的显示事件
- 获取当前日期
- 将当前日期设置为日期编辑小部件
void MyDialog::showEvent(QShowEvent * event)
{
QDate date = QDate::currentDate();
m_dateEdit->setDate(date); // sets the current date to date edit.
QDialog::showEvent(event);
}
顺便说一句,如果打开应用程序,FunctOn setCurrentDate()是一个将运行的函数。它在标准ui->setupUI(这个)之后运行函数
void MyDialog::showEvent(QShowEvent * event)
{
QDate date = QDate::currentDate();
m_dateEdit->setDate(date); // sets the current date to date edit.
QDialog::showEvent(event);
}