設定ウィジェットを作成して、日付を選択できます。
QDate(int year、int month、int day)を使ってQDate-Constructorを呼び出すために3つのQLineEditsを作成するのは良いことではないので、「show calendar」-Buttonを押してたとえば、日付を選択することができます。
しかし、私はこのカレンダーを新しいウィンドウに表示したくないので、私はそれを "ポップアップ"(これを説明する方法はわかりません)として表示したいと思います。たとえば、OpenOffice -設定。
これを実装する方法はありますか?QCalendarWidgetを新しいウィンドウではなく「ポップアップ」として使用しますか?
1
A
答えて
2
、あなたはQDateEdit
を使用して検討していますか?これにより、ユーザーは残りのオペレーティングシステムと一貫性のある形式で日付を編集できます。
4
これはタイプポップアップカレンダーの例で、フォームのボタンを押すとカレンダーを表示する必要があります。このクラスは、コード内のどこでも再利用できます。この例では、これはmain関数で開始されます。別のオプションについては
/*
* DatePopup.h
*
* Created on: Aug 29, 2009
* Author: jordenysp
*/
#ifndef DATEPOPUP_H_
#define DATEPOPUP_H_
#include <QDialog>
#include <QDate>
class QCalendarWidget;
class QDialogButtonBox;
class QVBoxLayout;
class DatePopup : public QDialog{
Q_OBJECT
public:
DatePopup(QWidget *parent=0);
QDate selectedDate() const;
private:
QWidget *widget;
QCalendarWidget *calendarWidget;
QDialogButtonBox* buttonBox;
QVBoxLayout *verticalLayout;
};
#endif /* DATEPOPUP_H_ */
/*
* DatePopup.cpp
*
* Created on: Aug 29, 2009
* Author: jordenysp
*/
#include <QtGui>
#include "DatePopup.h"
DatePopup::DatePopup(QWidget *parent)
:QDialog(parent, Qt::Popup)
{
setSizeGripEnabled(false);
resize(260, 230);
widget = new QWidget(this);
widget->setObjectName(QString::fromUtf8("widget"));
widget->setGeometry(QRect(0, 10, 258, 215));
verticalLayout = new QVBoxLayout(widget);
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
verticalLayout->setContentsMargins(0, 0, 0, 0);
calendarWidget = new QCalendarWidget(widget);
calendarWidget->setObjectName(QString::fromUtf8("calendarWidget"));
verticalLayout->addWidget(calendarWidget);
buttonBox = new QDialogButtonBox(widget);
buttonBox->setObjectName(QString::fromUtf8("buttonBox"));
buttonBox->setOrientation(Qt::Horizontal);
buttonBox->setStandardButtons(QDialogButtonBox::Cancel|QDialogButtonBox::Ok);
verticalLayout->addWidget(buttonBox);
QObject::connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
QObject::connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
}
QDate DatePopup::selectedDate() const{
return calendarWidget->selectedDate();
}
#include <QtGui>
#include <QDate>
#include <QApplication>
#include "DatePopup.h"
#include <iostream>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
DatePopup popup;
int result = popup.exec();
if(result == QDialog::Accepted){
QDate date = popup.selectedDate();
std::cout<< date.year() <<std::endl;
std::cout<< date.month() <<std::endl;
std::cout<< date.day() <<std::endl;
}
return a.exec();
}
このソリューションは、本当にQCalendarWidgetであるため、質問に最も適したソリューションです – dlewin