问题描述
我正在学习gtkmm,极其简单的示例项目(即带有可打开对话框的按钮的窗口)需要大约3秒钟的时间才能在合理的硬件上使用g ++进行编译。
$ time g++ examplewindow.cpp main.cpp `pkg-config gtkmm-3.0 --cflags --libs`
real 0m4.011s
user 0m3.630s
sys 0m0.374s
这次有什么我可以减少的吗?
我在Linux上使用的是gk的gtkmm版本3.24.0-2
和版本8.3.0
。
编辑:代码
examplewindow.h
#pragma once
#include <gtkmm/window.h>
#include <gtkmm/buttonBox.h>
#include <gtkmm/button.h>
class ExampleWindow : public Gtk::Window {
public:
ExampleWindow();
virtual ~ExampleWindow();
protected:
void on_button_info_clicked();
void on_button_question_clicked();
Gtk::ButtonBox m_ButtonBox;
Gtk::Button m_Button_Info,m_Button_Question;
};
examplewindow.cpp
#include <iostream>
#include <gtkmm/messagedialog.h>
#include "examplewindow.h"
ExampleWindow::ExampleWindow()
:m_ButtonBox( Gtk::ORIENTATION_VERTICAL ),m_Button_Info( "Show info Box" ),m_Button_Question( "Show question Box" )
{
add( m_ButtonBox );
m_Button_Info.signal_clicked().connect( sigc::mem_fun( *this,&ExampleWindow::on_button_info_clicked) );
m_Button_Question.signal_clicked().connect( sigc::mem_fun( *this,&ExampleWindow::on_button_question_clicked) );
m_ButtonBox.pack_start( m_Button_Info );
m_ButtonBox.pack_start( m_Button_Question );
show_all_children();
}
ExampleWindow::~ExampleWindow() {
}
void ExampleWindow::on_button_info_clicked() {
Gtk::MessageDialog dialog( *this,"This is an INFO MessageDialog",false,Gtk::MESSAGE_QUESTION,Gtk::BUTTONS_OK_CANCEL);
dialog.set_secondary_text( "This is the secondary text" );
dialog.run();
}
void ExampleWindow::on_button_question_clicked() {
Gtk::MessageDialog dialog( *this,"This is a QUESTION MessageDialog",Gtk::BUTTONS_OK_CANCEL);
dialog.set_secondary_text( "This is the other text" );
int result = dialog.run();
switch( result ) {
case( Gtk::RESPONSE_OK ):
std::cout << "Ok clicked" << std::endl;
break;
case( Gtk::RESPONSE_CANCEL ):
std::cout << "Cancel clicked" << std::endl;
break;
default:
std::cout << "Unexpected button clicked" << std::endl;
break;
}
}
main.cpp
#include <gtkmm/application.h>
#include "examplewindow.h"
int main( int argc,char **argv ) {
auto app = Gtk::Application::create( argc,argv,"org.gtkmm.example" );
ExampleWindow window;
return app->run( window );
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)