GTK+ / Gtkmm,检查笔记本标签页是否已经存在,不存在才创建
GTK+ / Gtkmm, check if a notebook tab already exists, and create it only if it doesn't exist
我正在学习使用 Gtkmm。现在我必须制作一个带有按钮的 window,单击该按钮会打开一个 "notebook" 选项卡。现在,我想让它检查选项卡是否已经存在,并且只有在选项卡不存在时才打开选项卡。请有人告诉我是否有办法用 Gtkmm 做到这一点。
提前致谢。
我当前的代码如下:
#include <iostream>
#include <iomanip>
#include <gtkmm-3.0/gtkmm.h>
using namespace std;
class programa : public Gtk::Window
{
public:
//Constructor y destructor
programa();
~programa();
protected:
//Signal handlers:
void en_boton1();
//Child widgets:
Gtk::Grid w_grid;
Gtk::Button boton1;
Gtk::Notebook hojas;
Gtk::Label nombre1;
};
void programa::en_boton1()
{
hojas.append_page(nombre1, "Primera");
show_all_children();
}
programa::programa() : boton1(), boton2(), nombre1("pestaña 1"), nombre2("pestaña 2")
{
set_title("ventana");
maximize();
add(w_grid);
set_border_width(10);
boton1.add_pixlabel("info.xpm", "botoncito1");
w_grid.attach(boton1, 1 ,1 ,1 ,1);
boton1.signal_clicked().connect( sigc::mem_fun(*this,&programa::en_boton1 ) );
w_grid.attach(hojas, 1,2,4,1);
hojas.set_border_width(10);
show_all_children();
}
programa::~programa() {}
int main(int argc, char *argv[])
{
Gtk::Main paq(argc, argv);
programa principal;
//Shows the window and returns when it is closed.
Gtk::Main::run(principal);
return 0;
}
Gtk::Notebook::get_n_pages() 和 get_nth_page() 应该做你需要的:
https://developer.gnome.org/gtkmm/stable/classGtk_1_1Notebook.html#aee6987ef10d8e3afcc40824c53f4c1ad
但是您需要自己的逻辑(可能在 dynamic_cast<> 之后)来决定是否有笔记本页面是您要查找的页面。
我正在学习使用 Gtkmm。现在我必须制作一个带有按钮的 window,单击该按钮会打开一个 "notebook" 选项卡。现在,我想让它检查选项卡是否已经存在,并且只有在选项卡不存在时才打开选项卡。请有人告诉我是否有办法用 Gtkmm 做到这一点。
提前致谢。
我当前的代码如下:
#include <iostream>
#include <iomanip>
#include <gtkmm-3.0/gtkmm.h>
using namespace std;
class programa : public Gtk::Window
{
public:
//Constructor y destructor
programa();
~programa();
protected:
//Signal handlers:
void en_boton1();
//Child widgets:
Gtk::Grid w_grid;
Gtk::Button boton1;
Gtk::Notebook hojas;
Gtk::Label nombre1;
};
void programa::en_boton1()
{
hojas.append_page(nombre1, "Primera");
show_all_children();
}
programa::programa() : boton1(), boton2(), nombre1("pestaña 1"), nombre2("pestaña 2")
{
set_title("ventana");
maximize();
add(w_grid);
set_border_width(10);
boton1.add_pixlabel("info.xpm", "botoncito1");
w_grid.attach(boton1, 1 ,1 ,1 ,1);
boton1.signal_clicked().connect( sigc::mem_fun(*this,&programa::en_boton1 ) );
w_grid.attach(hojas, 1,2,4,1);
hojas.set_border_width(10);
show_all_children();
}
programa::~programa() {}
int main(int argc, char *argv[])
{
Gtk::Main paq(argc, argv);
programa principal;
//Shows the window and returns when it is closed.
Gtk::Main::run(principal);
return 0;
}
Gtk::Notebook::get_n_pages() 和 get_nth_page() 应该做你需要的: https://developer.gnome.org/gtkmm/stable/classGtk_1_1Notebook.html#aee6987ef10d8e3afcc40824c53f4c1ad
但是您需要自己的逻辑(可能在 dynamic_cast<> 之后)来决定是否有笔记本页面是您要查找的页面。