[英]Unable to focus and give input to widgets in Qt5
已解決的問題 :Q_OBJECT宏是必需的,正確的信號插槽聲明對於任何其他句柄也很重要。
我無法專注於任何輸入類型的小部件,例如QTextEdit
, QListWidget
等。
注意 :沒有編譯時或運行時錯誤。
更新 : QSplitter
工作正常! 我有一個QListWidget
,我單擊了它的項目,但是只有當我使用拆分器進行下一步移動時,它們才會突出顯示。
我有一個MainWindow
從派生類QMainWindow
在聲明main_window.h
:
class MainWindow : public QMainWindow{
Q_OBJECT
public:
MainWindow(QWidget *parent = 0);
//some other members like menu and statusbar here
}
我還有另一個叫Stack
類,它是從stack.h
定義的QWidget
stack.h
:
class Stack: public QWidget{
public:
Stack(QWidget *parent=0);
//some other members
}
Stack
構造方法如stack.cpp
:
Stack::Stack(QWidget *parent):QWidget(parent){
main = new QHBoxLayout;
handle = new QSplitter;
setupList();
setupScreens();
//above functions add the widgets to the handle splitter
main->addWidget(handle);
setLayout(main);
}
如果我使用test->show()
在與MainWindow
分開的單獨窗口中打開此小部件,則一切按預期/按我的方式工作。 但是在MainWindow
構造函數中執行此操作會使它不可單擊。
MainWindow::MainWindow(QWidget *parent):QMainWindow(parent){
Stack *test = new Stack(this);
//test->show();
setCentralWidget(test);
}
這很奇怪。 為什么我無法集中處理任何可以接受輸入的小部件,例如QTextEdit
, QListWidget
或單擊任何QPushButton
小部件?
請編譯以下代碼,它正在工作..您正在集中精力並在QTextEdit上進行編輯...
棧
#include <QWidget>
class Stack: public QWidget
{
Q_OBJECT
public:
Stack(QWidget *parent = 0);
~Stack(void);
};
stack.cpp
#include "Stack.h"
#include<QTextEdit>
#include<QHBoxLayout>
Stack::Stack(QWidget *parent):QWidget(parent){
QHBoxLayout* main = new QHBoxLayout;
QTextEdit *test = new QTextEdit;
main->addWidget(test);
//other things added to main layout
setLayout(main);
}
Stack::~Stack(void)
{
}
主窗口1.h
#ifndef MAINWINDOW1_H
#define MAINWINDOW1_H
#include <QtGui/QMainWindow>
//#include "ui_mainwindow1.h"
class Mainwindow1 : public QMainWindow
{
Q_OBJECT
public:
Mainwindow1(QWidget *parent = 0, Qt::WFlags flags = 0);
~Mainwindow1();
private:
//Ui::Mainwindow1Class ui;
};
#endif // MAINWINDOW1_H
mainwindow1.cpp
#include "mainwindow1.h"
#include "Stack.h"
#include <QTextEdit>
Mainwindow1::Mainwindow1(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
Stack *test = new Stack;
setCentralWidget(test);
}
Mainwindow1::~Mainwindow1()
{
}
main.cpp
#include "mainwindow1.h"
#include <QtGui/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Mainwindow1 w;
w.show();
return a.exec();
}
如果some1可以找到有關如何在QT5中從UI設置對輸入小部件的關注的答案,則可以使用:
ui->plainTextEdit->setFocus();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.