首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从gtkmm3中的日历小部件中获取日期?

如何从gtkmm3中的日历小部件中获取日期?
EN

Stack Overflow用户
提问于 2020-04-06 18:24:17
回答 1查看 220关注 0票数 0

所以我不知道怎么才能让这东西正常工作。

我已经阅读了类引用,但是只有两个对get_date()的引用返回。如何从日历部件中获取日期?

现在,我调用该方法是错误的,这会导致错误。

这是我的Notebook.hpp

代码语言:javascript
复制
#pragma once

#include <gtkmm.h>

class NotebookMain : public Gtk::Window{
    public:
        NotebookMain();
        virtual ~NotebookMain();

    protected:
        // Signal handlers
        void on_notebook_switch_page(Gtk::Widget *page, guint page_num);
        void on_button_add_appointment();

        // Member widgets
        Gtk::Notebook notebookMain;
        Gtk::Label label1, labelTest;
        Gtk::Box boxDatebook, boxCalendar
        Gtk::Calendar calendar;
        Gtk::Button buttonAddAppointment;
};

这是我的Notebook.cpp

代码语言:javascript
复制
#include <iostream>
#include "../include/NotebookMain.hpp"

NotebookMain::NotebookMain() : label1("Hello from inside Tab 2!"),
                               labelTest("Hello from inside Appointments"){
    this->set_title("Test");
    this->set_default_size(640, 480);

    // Create Calendar Box
    boxCalendar.set_orientation(Gtk::ORIENTATION_VERTICAL);
    boxCalendar.pack_start(calendar);
    buttonAddAppointment.set_label("Add Appointment");
    boxCalendar.pack_start(buttonAddAppointment);
    // Create Appointments Box
    boxAppointments.set_orientation(Gtk::ORIENTATION_VERTICAL);
    boxAppointments.pack_start(labelTest);
    // Create Datebok Box
    boxDatebook.set_orientation(Gtk::ORIENTATION_HORIZONTAL);
    boxDatebook.pack_start(boxCalendar);
    boxDatebook.pack_end(boxAppointments);

    // Set Notebook
    notebookMain.set_border_width(0);
    // Add Notebook tabs
    notebookMain.append_page(boxDatebook, "Datebook");
    notebookMain.append_page(label1, "Tab 2");

    // Switch tabs
    notebookMain.signal_switch_page().connect(sigc::mem_fun(*this, &NotebookMain::on_notebook_switch_page));
    // Get Date
    buttonAddAppointment.signal_clicked().connect(sigc::mem_fun(*this, &NotebookMain::on_button_add_appointment));

    // Add Main Window (Notebook)
    this->add(notebookMain);
    this->show_all_children();
}

NotebookMain::~NotebookMain(){}

void NotebookMain::on_notebook_switch_page(Gtk::Widget * /* page */, guint page_num){
    std::cout << "Switched to tab with index : " << page_num << std::endl;
}

void NotebookMain::on_button_add_appointment(){
    std::cout << "Button clicked\n";
    std::cout << calendar.get_date() << "\n";
}

和错误

代码语言:javascript
复制
src/NotebookMain.cpp: In member function ‘void NotebookMain::on_button_add_appointment()’:
src/NotebookMain.cpp:51:23: error: no matching function for call to ‘Gtk::Calendar::get_date()’
   51 |     calendar.get_date();
      |                       ^
In file included from /usr/include/gtkmm-3.0/gtkmm.h:196,
                 from src/../include/NotebookMain.hpp:3,
                 from src/NotebookMain.cpp:3:
/usr/include/gtkmm-3.0/gtkmm/calendar.h:299:8: note: candidate: ‘void Gtk::Calendar::get_date(guint&, guint&, guint&) const’
  299 |   void get_date(guint& year, guint& month, guint& day) const;
      |        ^~~~~~~~
/usr/include/gtkmm-3.0/gtkmm/calendar.h:299:8: note:   candidate expects 3 arguments, 0 provided
/usr/include/gtkmm-3.0/gtkmm/calendar.h:305:8: note: candidate: ‘void Gtk::Calendar::get_date(Glib::Date&) const’
  305 |   void get_date(Glib::Date& date) const;
      |        ^~~~~~~~
/usr/include/gtkmm-3.0/gtkmm/calendar.h:305:8: note:   candidate expects 1 argument, 0 provided
make: *** [makefile:9: NotebookMain.o] Error 1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-04 16:35:04

这解决了问题。我需要传递参数,然后这些变量将存储日历中的值。

代码语言:javascript
复制
unsigned int year, month, day;
calendar.get_date(year, month, day);

专业提示:正确阅读文档!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61066431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档