Доброго всем времени суток.
Нужно создать оконное приложение, с возможностью вызова и запуска из него стороних приложений. В программе реализовано меню(«о программе,выход») и указатель на положения курсора ( нашёл в интернете). Нужно что бы был ещё один пункт меню «Приложения» по нажатию на который появлялось окошко
02.h
#include <QtGui>// подключаем заголовочный файл в котором описаны все объекты, относящиеся к элементам графического интерфейса
class MainWindow : public QMainWindow {// объявляем класс
Q_OBJECT//обязательный макрос
public:
MainWindow();
protected:// виртуальные методы,вызываймые автоматически при изменении окна, закрытии окна
virtual void resizeEvent(QResizeEvent *event);
virtual void mouseMoveEvent(QMouseEvent *event);
virtual void closeEvent(QCloseEvent *event);
private slots:// описание слотов
void about();
private:// переменные-челены класса
QAction *aboutAction;
QAction *exitAction;
QMenu *fileMenu;
QLabel *sb1;
QLabel *sb2;
QLabel *sb3;
bool askOnClose();// служебная функция, вызываймая при закрытии окна
};
Main.cpp
#include <QtGui>
#include "02.h"
MainWindow::MainWindow() {
QTextCodec *codec = QTextCodec::codecForName("CP1251");//определили кодек
QTextCodec::setCodecForTr(codec);
aboutAction = new QAction(tr("&О программе"), this);
aboutAction->setStatusTip(tr("Сведения о программе"));// создали действие О программе. задали для него текст подскази и связали с функцией about реализованной ниже
connect(aboutAction, SIGNAL(triggered()), this, SLOT(about()));
exitAction = new QAction(tr("В&ыход"), this);
exitAction->setStatusTip(tr("Выход из программы"));// создали действие выход задали для него текст подсказки и клавиатурное сокращение, связали его с функцие close, выполняющей закрытие окна
exitAction->setShortcut(tr("Ctrl+Q"));
connect(exitAction, SIGNAL(triggered()), this, SLOT(close()));
// создаётся меню файл, состоящее из двух пунктов
fileMenu = menuBar()->addMenu(tr("&Файл"));
fileMenu->addAction(aboutAction);
fileMenu->addSeparator();
fileMenu->addAction(exitAction);
sb1 = new QLabel(statusBar());
sb2 = new QLabel(statusBar());
sb3 = new QLabel(statusBar());
statusBar()->setSizeGripEnabled(false);
statusBar()->addWidget(sb1, 2);
statusBar()->addWidget(sb2, 1);
statusBar()->addWidget(sb3, 1);
sb1->setText(tr("Положение курсора"));
setMouseTracking(true);
}
void MainWindow::resizeEvent(QResizeEvent *event) {
QSize sz = event->size();
sb2->setText(
QString( "(%1, %2)" ).arg( sz.width() ).arg( sz.height() ) );
}
void MainWindow::mouseMoveEvent(QMouseEvent *event) {
QPoint pos = event->pos();
sb3->setText(
QString( "%1, %2" ).arg( pos.x() ).arg( pos.y() ) );
}
void MainWindow::about() {
QMessageBox::about(
this, tr("О программе"),
tr("<h2>текст</h2>"
"<p>текст"));
}
bool MainWindow::askOnClose() {
int r = QMessageBox::question(
this, tr("Подтвердите"),
tr("Выйти из программы?"),
QMessageBox::Yes | QMessageBox::No,
QMessageBox::Yes,
QMessageBox::Cancel | QMessageBox::Escape);
return (r == QMessageBox::Yes);
}
void MainWindow::closeEvent(QCloseEvent *event) {
if (askOnClose()) {
event->accept();
} else {
event->ignore();
}
}
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
MainWindow mainWin;
QBrush br(Qt::TexturePattern);
mainWin.setFixedSize(1300, 1400);
br.setTextureImage(QImage("C:/wood.jpg"));// установка фона окна
QPalette plt = mainWin.palette();
plt.setBrush(QPalette::Background, br);
mainWin.setPalette(plt);
mainWin.setWindowTitle("MainWindow");// установка надписи заголовка окна
mainWin.show();
return app.exec();
}
Нашёл в учебника Шлее Qt 4.5 код
QStringList lst;
QListWidget lwg;
QListWidgetItem* pitem = 0;
lwg.setIconSize(QSize(48,48));
lst << "Word" <<"Google Chrome";
foreach(QString str, lst) {
pitem = new QListWidgetItem(str, &lwg);
pitem->setIcon(QPixmap(str + ".jpg"));
lwg.resize(125, 130);
lwg.show();
в коде не ясно как и откуда будут появлятся иконки(
ну не в этом суть, нужно что бы когда появиться это окошко , пользователь мог выбрать нужный ему пункт, и приложение которое должно быть «под пунктом» запустилось,
нашёл код вроде для запуска приложений
QProcess prog ;
prog.start("D:/…..exe");
Как собрать всё это воедино не знаю, помогите.