버튼, 툴바 등을 만들려는 작은 응용 프로그램이 있지만 기존 GTK 아이콘 테마를 사용하고 싶지는 않습니다. 내 자신을 만들고 싶습니다. 그래서 자습서와 기타 등등을 찾았지만, 밝혀진 바에 따라 온라인에서 잘 논의되지 않았습니다. 그래서 난 내 스스로 뭔가를 시도 :Gtkmm에서 사용자 지정 IconFactory 만들기
헤더 파일 :
#include <gtkmm.h>
#include <string>
#include <iostream>
#include <errno.h>
class IconFactoryBuilder
{
public:
IconFactoryBuilder();
~IconFactoryBuilder();
void RegisterNewIcons(std::string pPath);
private:
Glib::RefPtr<Gtk::IconFactory> mCustomFactory;
};
CPP 파일 :
#include <IconFactoryBuilder.h>
IconFactoryBuilder::IconFactoryBuilder() {
mCustomFactory = Gtk::IconFactory::create();
}
IconFactoryBuilder::~IconFactoryBuilder() {
}
void IconFactoryBuilder::RegisterNewIcons(std::string pPath) {
Glib::RefPtr<Gtk::IconSet> iconSet = Gtk::IconSet::create();
Gtk::IconSource someSource;
try{
Gtk::Image *someImage=Gtk::manage(new Gtk::Image(pPath+"appbar.at.png"));
someImage->set_pixel_size(Gtk::IconSize(48));
someSource.set_pixbuf(someImage->get_pixbuf());
someSource.set_size(Gtk::ICON_SIZE_DIALOG);
someSource.set_size_wildcarded();
}
catch(const Glib::Exception &ex) {
std::cerr << "An error occurred while opening the icon file!" << strerror(errno) << std::endl;
}
catch(...) {
std::cerr << "Unknown Error!" << std::endl;
}
iconSet->add_source(someSource);
const Gtk::StockID somestock("MyNewIcon");
Gtk::Stock::add(Gtk::StockItem(somestock, "somelabel"));
mCustomFactory->add(somestock, iconSet);
mCustomFactory->add_default();
}
하지만 지금 난 정말 호출하는 방법을 모르기 때문에, 꽤 붙어 내가 만든이 새로운 아이콘. 위의 작성된 코드가 실제로 아이콘을 찾을 수 있는지 없는지 나는 또한 알지 못합니다.
I을 솔직히 말해서 당신의 대답을 이해하지 못했습니다. 물론 주식 아이콘이 내가 원했던 것이면이 모든 문제를 해결하지 못할 것이다. 나는 내 자신의 이름으로 자신의 주식을 만들어야합니다. 인기있는 아이콘 세트가 필요를 충족시키지 않는 특수 용도의 응용 프로그램입니다. –
Gnome "open", "close"등의 아이콘을 "open", "close"아이콘으로 바꾸시겠습니까? 또는 자신 만의 아이콘을 만들고 싶습니다. 응용 프로그램에서 동작을 나타내는 "floop"및 "greeble"? – ptomato
후자의 것 :) 그리고 나는 내가 GTK3를 사용하고 있다고 언급하는 것을 잊었다 고 생각한다. CSS를 사용하여 버튼의 스타일을 지정할 수없는 이유는 버튼의 이름을 지정하지 않고 주식 매크로와 표준 GTK 응답으로 버튼을 만들었 기 때문입니다. 그러나 그것은 테스트 용이었습니다. 이제 표준 아이콘 세트에서 다루지 않는 전문화 된 아이콘을 만들어야합니다. –