0
我已經宣佈在mainwindow.hQT C++內部變量切換
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
int port();
一個int功能此外我聲明在從屬mainwindow.cpp文件此功能。
int MainWindow::port()
{
int port_int;
QString port_ei;
if(ui->portInput->text() == 0)
{
port_ei = "6008";
ui->textIncome->setPlainText(port_ei);
port_int = port_ei.toInt();
}
else
{
port_ei = ui->portInput->text();
ui->textIncome->setPlainText(port_ei);
port_int = port_ei.toInt();
}
return port_int;
}
現在我想要我的服務器(在myserver.cpp文件中)來監聽那個端口。
MyServer::MyServer(QObject *parent) :
QObject(parent)
{
server = new QTcpServer(this);
connect(server,SIGNAL(newConnection()),this,SLOT(newConnection()));
int port_out = MainWindow::port();
if(!server->listen(QHostAddress::Any,port_out))
{
qDebug() << "Server could not start.";
}
else
{
qDebug() << "Server started.";
}
}
但QT告訴我,我犯了一個不是靜態的功能(在int port_out = MainWindow::port();
線)的非法請求。 如何解決?有沒有更好的方法來做到這一點,如果你有兩個獨立的.cpp和.h文件(除了main.cpp)。 是的,我在兩個cpp文件中都包含了「mainwindow.h」和「myserver.h」。
我該如何創建一個main_window指向MainWindow的指針? * main_window = MainWindow? – beary
@ beary:不。退一步。 **哪個** MainWindow?如果你的應用只有一個,[使用適當的qApp功能](http://stackoverflow.com/a/5921594/15416) – MSalters
@ beary:這是非常普遍的問題。你根本不熟悉C++嗎?也許你應該閱讀一些書籍教程。通常在Qt中,主窗口類的對象是在'main()'函數中創建的。在主窗口構造函數和類成員函數中,您有一個指向'MainWindow'的指針,可以使用'this'關鍵字引用它。例如,您可以將此指針傳遞給'MyServer'構造函數。 –