⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qv4l2.cpp

📁 trident tm5600的linux驱动
💻 CPP
字号:
#include "qv4l2.h"#include "general-tab.h"#include "v4l2.h"#include <qimage.h>#include <qpixmap.h>#include <qtoolbar.h>#include <qtoolbutton.h>#include <qpopupmenu.h>#include <qmenubar.h>#include <qfile.h>#include <qfiledialog.h>#include <qstatusbar.h>#include <qapplication.h>#include <qmessagebox.h>#include <qlineedit.h>#include <qvalidator.h>#include <qlayout.h>#include <qvbox.h>#include <qhbox.h>#include <qlabel.h>#include <qslider.h>#include <qspinbox.h>#include <qcombobox.h>#include <qcheckbox.h>#include <qpushbutton.h>#include <qtooltip.h>#include <qwhatsthis.h>#include <fcntl.h>#include <sys/ioctl.h>#include <errno.h>#include "fileopen.xpm"ApplicationWindow::ApplicationWindow()    : QMainWindow( 0, "V4L2 main window", WDestructiveClose | WGroupLeader ){    QPixmap openIcon, saveIcon;    fd = -1;    sigMapper = NULL;    QToolBar * fileTools = new QToolBar( this, "file operations" );    fileTools->setLabel( "File Operations" );    openIcon = QPixmap( fileopen );    QToolButton * fileOpen	= new QToolButton( openIcon, "Open File", QString::null,			   this, SLOT(choose()), fileTools, "open file" );    (void)QWhatsThis::whatsThisButton( fileTools );    const char * fileOpenText = "<p><img source=\"fileopen\"> "		 "Click this button to open a <em>new v4l device</em>.<br>"		 "You can also select the <b>Open</b> command "		 "from the <b>File</b> menu.</p>";    QWhatsThis::add( fileOpen, fileOpenText );    QMimeSourceFactory::defaultFactory()->setPixmap( "fileopen", openIcon );    QPopupMenu * file = new QPopupMenu( this );    menuBar()->insertItem( "&File", file );    int id;    id = file->insertItem( openIcon, "&Open...",			   this, SLOT(choose()), CTRL+Key_O );    file->setWhatsThis( id, fileOpenText );    file->insertSeparator();    file->insertItem( "&Close", this, SLOT(close()), CTRL+Key_W );    file->insertItem( "&Quit", qApp, SLOT( closeAllWindows() ), CTRL+Key_Q );    menuBar()->insertSeparator();    QPopupMenu * help = new QPopupMenu( this );    menuBar()->insertItem( "&Help", help );    help->insertItem( "&About", this, SLOT(about()), Key_F1 );    help->insertItem( "What's &This", this, SLOT(whatsThis()), SHIFT+Key_F1 );    statusBar()->message( "Ready", 2000 );    tabs = new QTabWidget(this);    tabs->setMargin(3);    //resize( 450, 600 );}ApplicationWindow::~ApplicationWindow(){	if (fd >= 0) ::close(fd);}void ApplicationWindow::setDevice(const QString &device){	if (fd >= 0) ::close(fd);	while (QWidget *page = tabs->page(0)) {		tabs->removePage(page);		delete page;	}	delete tabs;	delete sigMapper;	tabs = new QTabWidget(this);	tabs->setMargin(3);	sigMapper = new QSignalMapper(this);	connect(sigMapper, SIGNAL(mapped(int)), this, SLOT(ctrlAction(int)));	ctrlMap.clear();	widgetMap.clear();	classMap.clear();	fd = ::open(device, O_RDONLY);	if (fd >= 0) {		tabs->addTab(new GeneralTab(device, fd, 4, tabs), "General");		addTabs();	}	if (QWidget *current = tabs->currentPage()) {		current->show();	}	tabs->show();	tabs->setFocus();	setCentralWidget(tabs);}void ApplicationWindow::choose(){    QString fn = QFileDialog::getOpenFileName( "/dev/v4l", QString::null,					       this);    if ( !fn.isEmpty() ) {	    setDevice(fn);    }    else	statusBar()->message( "Loading aborted", 2000 );}void ApplicationWindow::closeEvent( QCloseEvent* ce ){	ce->accept();}bool ApplicationWindow::doIoctl(QString descr, unsigned cmd, void *arg){	statusBar()->clear();	int err = ioctl(fd, cmd, arg);	if (err == -1) {		QString s = strerror(errno);		statusBar()->message(descr + ": " + s, 10000);	}	return err != -1;}void ApplicationWindow::about(){    QMessageBox::about( this, "V4L2 Control Panel",			"This program allows easy experimenting with video4linux devices.");}ApplicationWindow *g_mw;int main(int argc, char **argv){    QApplication a(argc, argv);    g_mw = new ApplicationWindow();    g_mw->setCaption( "V4L2 Control Panel" );    g_mw->setDevice("/dev/video0");    g_mw->show();    a.connect( &a, SIGNAL(lastWindowClosed()), &a, SLOT(quit()) );    return a.exec();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -