пример создания дополнительно окна Qt C++
Primary tabs
основная тема здесь = http://fkn.ktu10.com/?q=node/2854
#include < Windows.h >
#include < QtCore\QtCore >
#include < QtGui\QtGui >
#pragma comment(lib, "QtCore4.lib")
#pragma comment(lib, "QtGui4.lib")
/* опишем класс
дополнительного окна
программы*/
class NewWindow :public QWidget
{
public:
QPushButton* button2;
NewWindow(): QWidget()
{
/* ОЧЕНЬ ВАЖНО = чтобы виджеты отображались на дополнительном окне
на хранить указатели на них в виде полей данного окна (его класса)
как это сделано в данном примере,скажем, для кнопки button2*/
this->resize(400, 500);
this->move(400, 400);
this->setWindowTitle("дополнительное окно");
button2 = new QPushButton("HEllo WOrld =) !!!)))", this);
button2->setToolTip("Это кнопка создана QT4.8.3 - на Си++ ");
button2->resize(button2->sizeHint());
button2->resize(150,80);
this->show();
// widget.show();
}
};
/* опишем класс
главного окна который наследует
функционал и свойства QMainWindow*/
class myMainWindow:public QMainWindow
{ Q_OBJECT
public:
myMainWindow (QWidget *parent = 0); // описываем конструктор
//родитель по-умолчанию отсутствует
public slots:
void openNewWindow(QWidget * parent = 0) // описываем реализацию внутри тела программы
{
someNewWindow = new NewWindow(); // Be sure to destroy you window somewhere
// someNewWindow->show();
// mMyNewWindow->show();
}
private:
// хранит ссылку на второе(дополнительное)окно
NewWindow *someNewWindow;
};
// описываем конструктор снаружи класса
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
QAction *newsearch = new QAction("&New search", this);
file->addAction(newsearch);
file->addAction(quit2);
//file = menuBar()->addMenu("&File");
/*прикрепляем сигналы к слотам - в обоих случаях мы оюидаем от пользователя
активизации элемента меню (triggered()) - но для действия ВЫХОД
мы вызываем стандартный слот выхода =quit()
а для действия открытия нового окна слот openNewWindow()
котроый мы описали в классе myMainWindow выше*/
connect(quit2, SIGNAL(triggered()), qApp, SLOT(quit())); // для выхода
connect(newsearch, SIGNAL(triggered()), this, SLOT(openNewWindow())); // для доп. окна
}
/*функция ниэе - это просто точка входа в проргамму -
на Qt по идее она должна выглядеть стандратно - типа main() -
так что данный пример не совсем корректен*/
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpcmdline,
int ncmdshow)
{
// блок настройки кодировки
// выбирайте кодировку в соответсвии с реальной кодировкой исходника
QTextCodec* codec = QTextCodec::codecForName("cp1251");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForLocale(codec);
QApplication app2(ncmdshow, (char **)lpcmdline);
//конец блока настройки кодировки
QApplication app(ncmdshow, (char **)lpcmdline);
myMainWindow *window = new myMainWindow();
// блок задания содержимого основного окна
QPushButton button2("HEllo WOrld =) !!!)))", window);
button2.setToolTip("Это кнопка создана QT4.8.3 - на Си++ ");
button2.resize(button2.sizeHint());
button2.resize(150,80);
button2.move(200, 300);
QLineEdit edit("буквы сюда))",window);
edit.setDragEnabled(1);
edit.move(100, 100);
// конец блока задания содержимого основного окна
window ->resize(376, 301);
window->show();
return app.exec();
}
#include "main.moc"
- Log in to post comments
- 9845 reads