Создание меню и панелей инструментов Си++ Qt
Primary tabs
отличный пример по данной теме находится здесь = http://zetcode.com/gui/qt4/menusandtoolbars/
#include < Windows.h >
#include < QtCore\QtCore >
#include < QtGui\QtGui >
#pragma comment(lib, "QtCore4.lib")
#pragma comment(lib, "QtGui4.lib")
/*сначала опишем класс
главного окна который наследует
функционал и свойства QMainWindow*/
class myMainWindow:public QMainWindow
{
public:
myMainWindow (QWidget *parent = 0); // описываем конструктор
//родитель по-умолчанию отсутствует
};
// описываем конструктор снаружи класса
myMainWindow::myMainWindow(QWidget *parent)
: QMainWindow(parent)
{
/*создаём действие используя конструктор типа
QAction ( const QString & text, QObject * parent )
*/
QAction *quit2 = new QAction("&Quit", this);
QMenu *file;
file = menuBar()->addMenu("&File");
// указываем одно из действий для элемента меню File
file->addAction(quit2);
// по
connect(quit2, SIGNAL(triggered()), qApp, SLOT(quit()));
}
/*функция ниже - это просто точка входа в проргамму -
на Qt по идее она должна выглядеть стандратно - типа main() -
так что данный пример не совсем корректен*/
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpcmdline,
int ncmdshow)
{
QApplication app(ncmdshow, (char **)lpcmdline);
myMainWindow *window = new myMainWindow();
window ->resize(376, 301);
window->show();
return app.exec();
}
Если сравнивать предыдующий вызов connect() с сигнатурой, а именно:
----------------------------- bool QObject::connect ( const QObject * sender, const char * signal, const QObject * receiver, const char * method, Qt::ConnectionType type = Qt::AutoConnection ) [static] ------------------------------
то можно заметить что мы использовали тип соединения по умолчанию - явно его не передавая
отправителем сигнала будет выступать объект типа "действие" quit (это просто название оно может быть любым)
тип порождаемого объектом сигнала за которым надо следить
- это triggered() - то есть некое действие произведённое пользователем над
указанным объектом.
qApp - это ни что иное как глобальный указатель на наше Qt-приложение
ПРИМЕЧАНИЕ: quit() - последний параметр connect в данном примере - не имеет никакого морфологического (в смысле названия) отношения к объекту quit (на самом деле объект quit можно было назвать например quit123435 - и всё бы работало)) )- а является слотом Qt приложения (см. ссылки ниже)
последний же параметр (слот) - это стандартный слот класса QCoreApplication
Ссылки по теме:
- Log in to post comments
- 6070 reads