我有这个QDateEdit小部件,但它始终显示标准时间,如01-01-2014(在DD-MM-YYYY中,但我可以在UI中更改此内容)。但是如果打开对话框(此QDateEdit小部件所在的位置),我希望它显示当前时间。 我在标签上测试了这个(参见void form_dialog)。但它的出版物是“2013年11月23日”。但我想要它像23-11-2013。它也给了我一个错误:
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
所以
void form_dialog::setCurrentDate()
{
QDate date = QDate::currentDate();
QString dateString = date.toString();
ui->DateEdit->setDate(dateString);
}
谢谢!
使用视觉效果可能很有用,下面显示的小部件应显示当前日期:
答案 0 :(得分:2)
首先,文档表明QDateEdit对象具有参数化构造函数,允许在构造时初始化日期:
QDateEdit::QDateEdit ( const QDate & date, QWidget * parent = 0 )
根据您实例化QDateEdit对象的方式,您可能还会考虑将QDateEdit子类化为您自己的小部件,并在小部件的构造函数中设置QDateEdit对象。但是这种方法可能有点过分(没有代码,很难推测什么是最好的......)
编辑后的问题提供了更多内容。 QDateEdit文档表明QDateEdit方法接受QDate对象,而不是QString对象。所以你的功能应该更像是:
void form_dialog::setCurrentDate()
{
QDate date = QDate::currentDate();
ui->DateEdit->setDate(date);
}
请注意,您的编译器在上面的错误消息中报告了不匹配的对象类型。
答案 1 :(得分:2)
如果要在对话框出现时显示当前日期,我会执行以下操作:
例如:
void MyDialog::showEvent(QShowEvent * event)
{
QDate date = QDate::currentDate();
m_dateEdit->setDate(date); // sets the current date to date edit.
QDialog::showEvent(event);
}